Firefox Addon:向窗口对象添加一些函数和对象

发布于 2024-12-20 17:17:58 字数 999 浏览 4 评论 0原文

我刚刚开始使用 FireFox Builder 构建一个简单的插件。我意识到我无法直接访问窗口对象。

我想要做的是获取窗口对象并用一些类和函数污染它,这样我就可以从页面本身调用它们。

以下是当前代码:

// This is an active module of the ritcoder Add-on
require("widget").Widget({
    id: "widgetID1",
    label: "My Mozilla Widget",
    contentURL: "http://www.mozilla.org/favicon.ico",
    onClick: function(evt){
        var tabs = require("tabs");
        var activeTab = tabs.activeTab;

        var notifications = require("notifications");
        notifications.notify({
          title: "Jabberwocky",
          text: "'Twas brillig, and the slithy toves",
          data: "did gyre and gimble in the wabe",
          onClick: function (data) {
            console.log(data);
            // console.log(this.data) would produce the same result.
          }
        });

        activeTab.window.a=20; //this fails
        context.alert('yesx');
    }
});

我该如何执行此操作?将一些代码注入到活动页面中,以便可以调用它。

问候,

I just started using the FireFox Builder to build a simple addon. I realised that I cannot get direct access to the window object.

What I want to do is to get the window object and pollute it with some classes and functions so I can call them from the page itself.

Below is the current code:

// This is an active module of the ritcoder Add-on
require("widget").Widget({
    id: "widgetID1",
    label: "My Mozilla Widget",
    contentURL: "http://www.mozilla.org/favicon.ico",
    onClick: function(evt){
        var tabs = require("tabs");
        var activeTab = tabs.activeTab;

        var notifications = require("notifications");
        notifications.notify({
          title: "Jabberwocky",
          text: "'Twas brillig, and the slithy toves",
          data: "did gyre and gimble in the wabe",
          onClick: function (data) {
            console.log(data);
            // console.log(this.data) would produce the same result.
          }
        });

        activeTab.window.a=20; //this fails
        context.alert('yesx');
    }
});

How do I do this? Inject some code into the active page so that it can be called.

regards,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

调妓 2024-12-27 17:17:58

您需要使用 tab.attach() 在选项卡上下文中运行内容脚本,然后使用 unsafeWindow 添加页面脚本可以看到的属性。 (您还应该阅读 内容脚本。)

Addon SDK 不提供从附加组件代码对页面的直接访问(无需内容脚本),因为它试图与制定的计划向前兼容。网页在进程中运行与浏览器和附加组件的进程分开。

You need to use tab.attach() to run a content script in the tab's context, and then use unsafeWindow to add properties the page's script can see. (You should also read the introduction to Content Scripts.)

The Addon SDK doesn't provide a direct access (without the content script) to the page from the add-on's code because it tries to be forward compatible with the plans to make web pages run in processes separate from the browser's and the add-on's process.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文