浏览器元素具有onpopupshowing属性,该属性是由多个javascript语句组成的字符串。如何将JavaScript字符串转换为JavaScript函数,保留正确的“this”?
我想“重写”那一点的JavaScript。如果这是一个函数,我只是将它分配给一个变量,将我的“覆盖”函数赋值给元素属性,并且(如果需要的话)从我的覆盖函数中调用原始函数,就像这样:
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中。
谢谢。
感谢您的回答。几个问题:原始代码需要事件参数。就像oldfunc.call(this,event)一样简单吗?另外,为什么addEventListener,而不是只是分配一个匿名函数onpopshowing与setAttribute?谢谢你的耐心。 – tpdi 2010-09-10 19:04:26
@tpdi,是的,这是如何将附加参数传递给'call'。通常不鼓励使用on-attributes,其中包括每个元素的限制。但它可能会在这里很好地工作。 – 2010-09-10 19:24:07