繁体   English   中英

从Overlay JS与页面DOM交互的安全方法

[英]Safe way to interact with page's DOM from Overlay JS

我有一个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 但是,只要您不解包对象或运行从网站获得的代码,就应该安全。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM