2010-11-26 19 views
4

Xulブラウザコンポーネントのリクエストを処理して新しいウィンドウを開くことも可能ですか?私はwindow.open関数を変更しようとしましたが、決して呼び出されないようです。 新しいウィンドウで開いているすべてのリンクがアプリケーションで開かれていません。XULブラウザから新しいウィンドウを開くには?

私は、対象にthis pageが見つかりましたが、提供された解決策は異なる動作を示していません。

これに関するヒント?

(ちなみに、私はスタンドアローンのアプリケーションではなく、Firefoxの拡張機能を開発しています)

答えて

1

私はあなたがXULRunnerアプリケーションであると仮定している、とあなたは非クロムブラウザでソース(例えば、HTTPまたはローカルファイル)からのクロムの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を開くことはできません。次のステップは、コンテンツの関連する部分がアクセス可能になるように、contentaccessibleを使用するようにconfファイルを変更することです(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)を確認してください。ブラウザのタイプがchromeでない場合は、chromeを作成して、それが違いを生むかどうかを調べる価値があります。

私の前提のうちのどれかが間違っている場合は、私に連絡してください。私は別のものを試します。

+0

ブラウザの種類について詳しくは、[このページ](http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/5ba466727c590004/31ff12e59aa3c218?pli = 1)は、新しいウィンドウの開口部を処理するためのウィンドウを設定できる環境を示します。ありがとう! –

0

通常のJSが動作しませんか?

window.open(url,windowname,flags); 
+0

はい*(コメントの最小文字数は15ですが、嫌いですか?)* –

+0

また、私はwindow.openに自分の関数の属性を設定しようとしました。それはそうではありません。 –

0

私が知っている2つの方法があります。

最初に、browser.chromeURLプリファレンスを<browser type="content-primary">を含むクロムURLに設定することです。コンテンツウィンドウが開こうとしたページが、指定されたブラウザに読み込まれます。

もう1つは、インターフェイスを実装するために定義したオブジェクトで、プロパティーwindow.browserDOMWindowを設定することです。これにより、タブ付きのインターフェイスを使用している場合は、開いている通話をタブに切り替えることができます。注意:タブ付きブラウジングの設定は、ウィンドウをタブに分けられるように設定する必要があります。そうしないと、XULrunnerはbrowser.chromeURLに戻ります。

関連する問題