Xul Browser コンポーネントが新しいウィンドウを開くリクエストを処理することは可能でしょうか? window.open 関数を変更してみましたが、呼び出されていないようです。新しいウィンドウで開くすべてのリンクがアプリケーションで開かれません。
件名でこのページを見つけましたが、提供されたソリューションは異なる動作を示していません。
これに関するヒントはありますか?
(ちなみに、私はFirefoxの拡張機能ではなく、スタンドアロンのアプリケーションを開発しています)
XULRunner アプリケーションを使用していて、Chrome 以外のソース (HTTP またはローカル ファイルなど) から Chrome URL をブラウザにロードしようとしているとします。UniversalXPConnect と UniversalBrowserWrite を有効にすると便利な場合がありますが、これらはセキュリティ リスクでもあります (Web 上の任意のスクリプトがそれらを使用できるため)。そのため、ブラウザーで無効にする傾向があります (たとえば、Firebug でその行を実行すると例外が発生します)。 ):
>>> netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect UniversalBrowserWrite");
Error: A script from "http://stackoverflow.com" was denied UniversalXPConnect UniversalBrowserWrite privileges.
コードベースのセキュリティ プリンシパルを使用してみて、違いが生じるかどうかを確認してみてはどうでしょうか? (http://www.mozilla.org/projects/security/components/signed-scripts.html#codebase)。Firebug の私にとっては、大きくて見栄えの悪いダイアログで OK した後、追加のアクセス許可を取得できますが、window.open で Chrome URL を開くことはできません。次のステップはおそらく、conf ファイルを contentaccessible を使用するように変更して、コンテンツの関連部分にアクセスできるようにすることです ( https://developer.mozilla.org/en/Chrome_Registration#contentaccessibleを参照)。
アクセス許可を昇格する際の厄介なメッセージを回避するには、http://forums.mozillazine.org/viewtopic.php?f=38&t=1769555 で説明されているように、適切なファイルのアクセス許可を自動的に設定してみてください。
また、ブラウザの種類 (https://developer.mozilla.org/en/XUL/Attribute/browser.type) を確認してください。ブラウザの種類がクロムでない場合は、クロムにしてみて、違いが生じるかどうかを確認する価値があるかもしれません。
私の仮定のいずれかが間違っている場合は、私に戻ってください。別のことを試みます。
通常のjsは動作しませんか?
window.open(url,windowname,flags);
私が知っている方法は2つあります。
1 つ目はbrowser.chromeURL
、<browser type="content-primary">
. コンテンツ ウィンドウが開こうとしたページは、指定されたブラウザーに読み込まれます。
2 つ目は、インターフェイスwindow.browserDOMWindow
を実装するために定義したオブジェクトを使用してプロパティを設定することです。nsIBrowserDOMWindow
これにより、タブ付きインターフェースを使用している場合に、open 呼び出しをタブに迂回させることができます。注: ウィンドウをタブに切り替えることができるようにタブ ブラウズ設定を設定する必要があります。そうしないと、XULrunner は にフォールバックしbrowser.chromeURL
ます。