[英]Safe way to interact with page's DOM from Overlay JS
我有一个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
。 但是,只要您不解包对象或运行从网站获得的代码,就应该安全。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.