MDN may have intermittent access issues April 18 13:00 - April 19 01:00 UTC. See whistlepig.mozilla.org for all notifications.

mozilla
Your Search Results

    Opening a Link in the Default Browser

    警告: この記事では仕様が未確定のインターフェイスを使っています。これらのインターフェイスは新しいバージョンの Mozilla で変更される可能性があり、その時はこのコードが動かなくなるかもしれません。

    XULRunner のアプリケーションからデフォルトブラウザで URI を開きたい時があるかもしれません。 これは HTTP または HTTPS の URI についての場合が多いのですが、それについて使用できる外部ハンドラが存在するあらゆるスキームについてもこの方法を使用できます。 これは nsIExternalProtocolService インターフェイスを使って行うことができます。

    // まず ioservice を用いて nsIURI オブジェクトを作る
    var ioservice = Components.classes["@mozilla.org/network/io-service;1"]
                              .getService(Components.interfaces.nsIIOService);
    
    var uriToOpen = ioservice.newURI("http://www.example.com/", null, null);
    
    var extps = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"]
                          .getService(Components.interfaces.nsIExternalProtocolService);
    
    // そしてそれを開く
    extps.loadURI(uriToOpen, null);
    

    デフォルトでは、外部プロトコルサービスは他のアプリケーションでリンクを開くことについてユーザに警告します。 デフォルトアプリケーションで開いても安全な特定のプロトコルについての警告を抑制するには、デフォルトの設定項目をセットする必要があります(Thunderbird では以下の設定を使用しています)。

    // suppress external-load warning for standard browser schemes
    pref("network.protocol-handler.warn-external.http", false);
    pref("network.protocol-handler.warn-external.https", false);
    pref("network.protocol-handler.warn-external.ftp", false);
    

    あるスキームについての外部ハンドラが存在しているかどうか確認することもできます。これはそれを行う方法です。

    var extps = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"]
                          .getService(Components.interfaces.nsIExternalProtocolService);
    if (extps.externalProtocolHandlerExists("http")) {
      // http:// URL に対するハンドラが存在する
    }
    

    IFrame 内のリンク

    インラインフレームの "src" として指定されている html 文書内のリンクをデフォルトブラウザで開けるようにするには、次の設定項目をセットします。

    pref("network.protocol-handler.expose-all", false);
    

    これでうまくいくようです。

    Interwiki Language Links

    ドキュメントのタグと貢献者

    Contributors to this page: Kozawa, Okome, Mole, Kacchi, Electrolysis
    最終更新者: Electrolysis,