【问题标题】:content script access to webpage js [duplicate]内容脚本访问网页js [重复]
【发布时间】:2015-01-02 08:19:22
【问题描述】:

我使用在线插件生成器创建了一个 firefox 插件。如何从插件中使用网页上的现有功能?这个网站不属于我,所以我无法绑定事件监听器,以便从我的插件向它发送事件。

更新:现在我有了这段代码,但它不起作用:

main.js

var widgets = require("widget");
var tabs = require("tabs");
var data = require("self").data;


var widget = widgets.Widget({
  id: "transfer",
  label: "Transfer",
  content: "Transfer",
  width: 100,
  onClick: function() {
    tabs.activeTab.attach({
      // native implementation of window.confirm will be used
      contentScriptFile: data.url("new.js")
    });
  }
});

new.js:

function foo()
{
    call(); // function in webpage

}
unsafeWindow.foo();

【问题讨论】:

    标签: javascript firefox firefox-addon firefox-addon-sdk


    【解决方案1】:

    您将内容脚本注入页面(例如通过page-mod 包)并在内容脚本中调用unsafeWindow.foo() 以从内容脚本中调用函数foo()。请参阅documentation 了解更多信息。请务必阅读警告:您依赖网页功能以您期望的方式行事,但可能并非如此。特别是,如果函数返回某些内容并且您想要处理该结果,您可能会无意中引入安全漏洞。

    【讨论】:

    • @tasaras:嘿,你应该写unsafeWindow.call()...
    • 我这样做了,但它说:在 TypeError 中 unsafeWindow.call 不是函数,页面上的函数是函数 call(){alert("asd");} 它适用于 unsafeWindow。警报(“asd”)
    • @tasaras:当然,您的代码中存在错误。要调用函数call(),这个函数必须在网页中实际定义...
    • 谢谢,我的函数在 jquery 的 ready() 里面,但是找不到
    猜你喜欢
    • 2013-12-28
    • 2013-03-09
    • 2015-04-11
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多