我有一个Firefox扩展,它检测页面何时在浏览器中加载并返回其window
和document
。我想附加一些事件(启动函数在我的插件的叠加)在页面中的元素,但我不知道如何做到这一点,在一种安全的方式。
下面是一个代码示例:
var myExt = {
onInit: function(){
var appcontent = document.getElementById("appcontent");
if(appcontent){
appcontent.addEventListener("DOMContentLoaded", this.onPageLoad, true);
}
},
onPageLoad: function(e){
var doc = e.originalTarget;
var win = doc.defaultView;
doc.getElementById("search").focus = function(){
/* ... 'Some privelliged code here' - unsafe? ... */
};
}
};
所以谁能告诉我什么是安全的方式来添加这些事件/与页面的DOM交互?
提前感谢!
我认为您想要收听focus
事件,而不是替换focus()
功能:
doc.getElementById("search").addEventListener("focus", function(event)
{
if (!event.isTrusted)
return;
...
}, false);
通常,这里几乎没有什么问题,因为您没有直接访问页面-已经有一个安全层(这也是为什么替换focus()
方法将没有效果)。您还可以确保您只对"真实"事件而不是由网页生成的事件起作用,您可以像示例代码一样检查event.isTrusted
。但只要你不展开对象或运行从网站上获得的代码,你应该是安全的。