从覆盖 JS 与页面的 DOM 交互的安全方式



我有一个Firefox扩展,它检测页面何时在浏览器中加载并返回其windowdocument。我想附加一些事件(启动函数在我的插件的叠加)在页面中的元素,但我不知道如何做到这一点,在一种安全的方式。

下面是一个代码示例:

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。但只要你不展开对象或运行从网站上获得的代码,你应该是安全的。

最新更新