2

簡単なアドオンを作成するためにFireFoxBuilderを使い始めたところです。ウィンドウオブジェクトに直接アクセスできないことに気づきました。

私がやりたいのは、ウィンドウオブジェクトを取得し、それをいくつかのクラスと関数で汚染して、ページ自体からそれらを呼び出すことができるようにすることです。

以下は現在のコードです:

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

どうすればよいですか?アクティブなページにコードを挿入して、呼び出すことができるようにします。

よろしく、

4

1 に答える 1

2

tab.attach()を使用してタブのコンテキストでコンテンツスクリプトを実行してから、unsafeWindowを使用してページのスクリプトが表示できるプロパティを追加する必要があります。(コンテンツスクリプトの概要も読む必要があります。)

アドオンSDKは、ブラウザとアドオンとは別のプロセスでWebページを実行する計画と上位互換性を持たせるため、アドオンのコードからページへの直接アクセス(コンテンツスクリプトなし)を提供しません。のプロセス。

于 2011-12-11T02:31:28.980 に答える