浏览器元素有一个onpopupshowing属性,它是一个由几个javascript语句组成的字符串。
我想“覆盖”这段javascript。
如果这是一个函数,我只需将它赋给一个变量,将我的“覆盖”函数赋给element属性,然后(如果需要)从我的覆盖函数中调用原始函数,就像这样:
var oldfunc;
function myoverrridingfunc () { my statement; oldfunc(); my other statement; }
oldfunc = element.getAttribute( "onpopupshowing" )
element.setAttribute( "onpopupshowing", myoverrridingfunc );但是element.getAttribute( "onpopupshowing“)不是一个函数,它是一个字符串。
我可以使用function对象将字符串转换为函数,但该字符串包含对this的引用。如何保留正确的this
截取/覆盖这段脚本的最佳方式是什么?注意:这只需要在Firefox中工作,而不需要在任何版本的java/ECMAscript中工作。
谢谢。
发布于 2010-09-11 02:36:13
var oldfuncStr = element.getAttribute("onpopupshowing");
element.removeAttribute("onpopupshowing");
var oldfunc = new Function(oldfuncStr);
element.addEventListener("popupshowing", function()
{
myStatement;
oldfunc.call(this);
otherStatement;
}, false);call专门用于指定this。我在火狐上进行了测试,但使用的是onclick事件而不是onpopupshowing。
发布于 2010-09-11 07:51:36
也许你想得太多了。为什么不用引号将JavaScript语句括起来并将其赋值给属性呢?如果该属性要求JavaScript语句为字符串,那么我不希望分配函数引用也能正常工作。(是吗?)
https://stackoverflow.com/questions/3687304
复制相似问题