【问题标题】:How to override default browser function如何覆盖默认浏览器功能
【发布时间】:2014-05-29 15:16:53
【问题描述】:

是否可以通过 firefox 插件在全局级别覆盖此函数?

const windowMediator = CC["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
windowMediator.getMostRecentWindow("navigator:browser");

【问题讨论】:

    标签: javascript mozilla firefox-addon-sdk


    【解决方案1】:

    您可以使用https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/page-mod

    pageMod.PageMod({
      include: "*",
      contentScriptWhen: 'start',
      contentScript: 'unsafeWindow.function=yourFunction;'
    });
    

    PageMod 在页面上的 js 开始运行之前在每个页面上注入 js (contentScriptWhen: 'start')。然后我们通过 XRayWrapper https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts/Accessing_the_DOM 覆盖窗口函数。

    【讨论】:

    • 你的答案不符合 Stack Overflow 的标准。考虑解释一下你的代码是做什么的!
    • 我应该在我的插件代码中包含这个吗?我会测试它并告诉你它是否有效!
    • 为简单起见 unsafeWindow = window.因此,当您执行 unsafeWindow.open = function(){alert('1')} 时。您覆盖默认 window.open
    猜你喜欢
    • 2014-02-14
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    相关资源
    最近更新 更多