从 firefox add-on 访问自定义 dom 功能

access custom dom function from firefox add-on

我正在使用最新的 SDK 开发 Firefox Add。我遇到的问题是,每当我尝试 运行 自定义 dom 函数时,它都不起作用。

场景: firefox add-on 必须能够遍历所有选项卡,如果根据标题打开正确的选项卡,运行 一个特定的功能,例如:mydom.checkIt();

<!DOCTYPE html>
<html>
<head>
   <title>My Web</title>
</head>
<body>

<script>
    mydom = {};
    mydom.checkIt = function (){
                          alert('Hi');
                    };
</script>

</body>
</html>

那么 add-on 源代码将类似于:

var tabs = require('sdk/tabs');

for (let tab of tabs)
{
        if(tab.title=='My Web')
        {
            tab.activate();             
        }
}

tabs.on('activate', function(tab) {

  tab.attach({
    contentScript: "if(typeof(mydom)!=='undefined')mydom.checkIt();else console.log('no defined');"
  });


});

但这不起作用,它总是说:"no defined"

有什么想法吗?

您必须使用 unsafeWindow 或 wrappedJSObject 进入 dom js 范围。所以 contentWindow.wrappedJSOBject.checkIt() 来自 bootstrap 插件(不确定 sdk)

警告,这可能对 e10s 不友好,我们应该找到一种方法来支持它