从firefox附加组件访问自定义dom函数

时间:2015-05-12 15:55:54

标签: firefox-addon firefox-addon-sdk

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

方案: firefox附加组件必须能够遍历所有选项卡,如果基于标题打开了正确的选项卡,请运行特定的功能,例如:mydom.checkIt();

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

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

</body>
</html>

然后,附加源代码将类似于:

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');"
  });


});

但这不起作用,它始终说:“没有定义”

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你必须使用unsafeWindow或wrappedJSObject进入dom js范围。所以contentWindow.wrappedJSOBject.checkIt()从bootstrap插件开始工作(不确定sdk)

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