0

さて、私はいくつかの変更を加えて、与えられたURLのセットを自動的にリロードするFirefoxアドオンを開発しています。コード全体を表示することはできません。だから、私は私にエラーを与えているコードの部分をコピーして貼り付けました。

このDOMContentLoadedイベントは、ページが読み込まれるたびにトリガーされると想定されており、適切に実行されます。問題は、新しいタブを開いた場合DOMContentLoaded、古いタブでイベントがトリガーされないことです。

//Any code here runs only for the first time u start the browser
window.addEventListener("load", function() { myExtension.init(); }, false);

var myExtension = { 
init: function()    
{
            var appcontent = document.getElementById("appcontent");
            if(appcontent)
            appcontent.addEventListener("DOMContentLoaded", myExtension.onPageLoad, true);
},

onPageLoad: function(aEvent)
{

    var doc = aEvent.originalTarget; // doc is document triggered "onload" event
    //execute on one the top page (not on iframes)
        if ((aEvent.originalTarget.nodeName == '#document') && (aEvent.originalTarget.defaultView.location.href == gBrowser.currentURI.spec)) 
        {setTimeout(function(){showInError(doc.location='about:home'}, 500);}  
},
}

簡単な方法で問題を書きたい(英語が下手でごめんなさい)

1)Firefoxを実行すると、タブ(タブ番号1など)が必要に応じて継続的にリロードされます。

2)ページを中断しないでおくと、タブNo.1ページが繰り返し読み込まれます(それが必要です)

3)新しいタブ(たとえばタブ番号2)を開くと、新しいタブ(タブ番号2)が希望どおりに継続的にリロードを開始します。ただし、タブ番号。1はリロードを停止します。

私が欲しいのは、タブ番号1とタブ番号の両方をリロードし続けることです。2.それを行う方法は?私のコードは何が問題なのですか?

4

2 に答える 2

0

document.getElementById( "appcontent");の代わりにgBrowserを使用してみてください。

gBrowser.addEventListener("DOMContentLoaded", myExtension.onPageLoad, true);

https://developer.mozilla.org/en/Code_snippets/On_page_load#Basic_onPageLoad_for_a_browser_window

于 2012-05-30T11:23:24.143 に答える
0

現在表示されているページ(アクティブタブ)でのみスクリプトを実行しているようです。

他のタブで実行する場合は、新しいタブを開くときにイベントリスナーをアタッチする必要があります(タブを閉じるときにそれらを削除することを忘れないでください)。このページで、この機能に役立つスニペットを入手できます。

https://developer.mozilla.org/en/XUL_School/Intercepting_Page_Loads#WebProgressListeners

于 2012-05-30T11:28:23.317 に答える