0

このガイドに従って、少し変更を加えましたが、このエラーが発生し続けます。

base.js で self.port が定義されていない [my content code]

ここに私のアドオンコード:

PageMod({
    include: [data.url('base.html')],
    contentScriptWhen: 'start',
    contentScriptFile: [data.url('jquery-1.7.2.min.js'),data.url('jquery-ui-1.8.21.custom.min.js'),data.url('base.js')],
    contentStyleFile: [data.url('css/mint-choc/jquery-ui-1.8.21.custom.css'),data.url('css/base.css')],
    onAttach: function(worker) {
            worker.port.on("request", function(txt) {
                console.log(txt);
                worker.port.emit("response","response for "+txt);
            });
    }
});

と私のコンテンツコード:

// initialized by jQuery
$(function() {
    self.port.on("response",function(txt){console.log("response "+txt);}) //this line is where the error point to.
    $('#tabs').tabs();
    testLoadLinks();
});

function testReceiveRequest(request) {
    console.log('received:',request);
    self.port.emit("request",request);
}

SDK バージョン 1.8 でブラウザー エディターを使用しています。誰かがこれを修正するのを手伝ってくれますか?

4

1 に答える 1

1

いくつかのテストとデバッグを行った後、2つの間違いを発見しました。関連性がないと思ったため、コード全体を入力しなかったのは残念です。

私はbase.htmlにこれを持っていました

<link type="text/css" href="css/mint-choc/jquery-ui-1.8.21.custom.css" rel="stylesheet" />
<link type="text/css" href="css/base.css" rel="stylesheet" />
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.21.custom.min.js"></script>
<script type="text/javascript" src="js/base.js"></script>

そしてこれはmain.jsにあります

PageMod({
include: [data.url("base.html")],
contentScriptWhen: 'start',
contentScriptFile: [data.url('jquery-1.7.2.min.js'),data.url('jquery-ui-1.8.21.custom.min.js'),data.url('base.js')],
contentStyleFile: [data.url('css/mint-choc/jquery-ui-1.8.21.custom.css'),data.url('css/base.css')],
onAttach: function(worker) {
        console.log("attaching...")
        worker.port.on("request", function(txt) {
            console.log(txt);
            worker.port.emit("response","response for "+txt);
        });
}
});

私のスクリプトは/data/ js /フォルダーにあり、見つからなかったため、main.jsにスクリプトのpageMod部分が読み込まれていませんでしたが、DOM内のコンテンツスクリプト自体によって読み込まれていました。self.portは未定義です。スクリプトタグとスタイルタグはすでにpageModにあるため、base.htmlから削除し、data.url('js / base.js')などのパスを修正しました。これで、アドオンスコープ内のスクリプトがDOMスコープにアクセスして変更できることを学びましたが、DOM内のスクリプトはアドオンスコープと通信できません(できますか?)。スクリプトがアドオンと対話するようにする場合は、スクリプトをアドオンスコープに残しておく必要があります。同じ過ちを犯した人を助けたいと思います。canuckistaniに感謝します。

于 2012-07-13T00:03:56.670 に答える