9

Xulで、ネットワークが(切断された)接続されているかどうかをどのように知ることができますか?

- アップデート

使用:

    function observe(aSubject, aTopic, aState) {
        if (aTopic == "network:offline-status-changed") {
            write("STATUS CHANGED!");
        }
    }
    var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
    os.addObserver(observe, "network:offline-status-changed", false);

と好み:

pref("network.manage-offline-status", true);

動作していません。ここにバグレポートがありますが、それとは関係がないと思います。

-

実際、Firefoxでも通知されないため、通知を受け取ることはできないと思います。ユーザーがブラウザにオフラインであることを知らせたい場合は、ユーザーが手動で「オフラインで作業」をマークする必要があります。

-

「offline」文字列のFirefox「about:config」フィルタリングのスクリーンショットですが、残念ながら「network.manage-offline-status」はありません。

ここに画像の説明を入力してください

4

3 に答える 3

5

navigator.onLineを使用できるはずです。こちらがヘルプページです

https://developer.mozilla.org/en/Online_and_offline_events

navigator.onLineは、true / false値を維持するプロパティです(オンラインの場合はtrue、オフラインの場合はfalse)。このプロパティは、ユーザーが対応するメニュー項目を選択して「オフラインモード」に切り替えるたびに更新されます(Firefoxでは[ファイル]-> [オフラインで作業])。

別の解決策(@Neilによるコメント):

Components.classes["@mozilla.org/observer-service;1"]
    .getService(Components.interfaces.nsIObserverService)
    .addObserver(myF­unction, "network:offline-status-changed", false);
于 2011-03-01T20:22:00.900 に答える
2

私が見つけた最善の方法は、のように動作する次のjavascriptコードを使用し、pingいくつかの大きなWebサイトでテストを行い、いずれも応答しない場合はネットワークを切断する必要があると想定することです。

var ping = {};
ping = {
    img:null,
    imgPreload:null,
    timer:null,
    init:function() {
        var sess = new Date();
        var nocache = sess.getTime();
        var imguri = ping.img+"?time="+nocache;
        var ping.imgPreload = new Image();
        ping.imgPreload.onload = function() {
            clearTimeout(ping.timer);
            ping.timer = null;
            alert("Domain is available");
        };
        ping.imgPreload.src = imguri;
        ping.timer = setTimeout("ping.fail_to_ping()",60000);
    },
    fail_to_ping:function() {
        clearTimeout(ping.timer);
        ping.timer = null;
        ping.imgPreload = null;
        alert("Ping to domain failed!");
    }
};

http://crynobone.com/ci/index.php/archive/view/852から)

- アップデート

ただし、これは信頼できるソリューションではないため(画像がウェブサイトに永久に存在することを信頼できないため)、最良のソリューションは新しいXPComコンポーネントを開発することかもしれません。

于 2011-03-10T13:28:25.973 に答える
0

ええと... HTML5(echmascript 5を読んでください)に従って、on-/offlineイベントが利用可能です。

こちらのMozilla Hacksでご覧ください

編集 20/4/2011:
MS MIX11 のポッドキャストを見ているときに、この回答の更新に遭遇しました:
http://channel9.msdn.com/Events/MIX/MIX11/HTM14 43:36 頃、講師は実際にこのプロパティについて話しているのwindow.navigator.onLineですが、ブラウザ (およびコンピュータ) がオンラインかどうかを検出するために使用しています。次に、online再びオンラインになったときにイベントを使用して何かを行います。

ただし、この方法は最新のブラウザーでのみ使用できます。そのため、IE 8 以下では接続をポーリングする必要があります。

于 2011-03-11T12:16:27.260 に答える