У меня есть функция eval, которая должна выполнять javascript из php. но мне нужно передать элемент, чтобы я мог навести указатель мыши на подсказку по ссылке, по которой щелкнул пользователь.
var globalEval = function globalEval(src, element) {
if (window.execScript) {
window.execScript(src);
return;
}
var fn = function(element) {
window.eval.call(window,src);
};
fn(element);
};
Я использую следующий способ передать элемент $(this)
globalEval(js_code, $(this));
// js_code is = alert(element);
я получаю ошибку неопределенного элемента, который определен в globalEval();
, как я могу это исправить?
eval(src)
, он бы забралelement
17.12.2012element = otherElm
, не влияет на то место, где вы его вызвали), тогда как локальныйeval(src)
будет использовать текущую среду. Есть и другие варианты его вызова (например, изменение / использование.call
). Я не говорю, чтоeval
когда-либо безопасно, но, по крайней мере, этот способ означает, что вы можете вызывать в нужной среде (при условии, чтоsrc
является допустимым JavaScript). 17.12.2012eval
, что не является вопросом OP. 17.12.2012eval
. Как я уже упоминал в своем ответе, eval - это зло. В лучшем случае вам не следует передавать какой-либо скрипт для вызова таким образом (как я думаю, как упоминалось Esailija?), А передавать только данные (например, как JSON) 17.12.2012new Function
поддерживается во всех основных браузерах и должен будет поддерживаться в IE обратно в IE6. 17.12.2012