私はこれを行うために5つの方法を集めましたが、いずれもパネル内では機能しません。 Firefoxは、基本的なタスクへのアクセスをブロックするのに驚くほど効果的です。Firefox Addonパネル内から現在のURLを取得
試み1:
var url = window.top.getBrowser().selectedBrowser.contentWindow.location.href;
エラー:window.top.getBrowserは関数ではありません
試み2:
をここでは、私が試したものです
var url = window.content.document.location;
エラー:許可プロパティにアクセスするために拒否された '文書'
試み3:
はvar mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIWebNavigation) .QueryInterface(Components.interfaces.nsIDocShellTreeItem) .rootTreeItem .QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIDOMWindow); var url = mainWindow.getBrowser().selectedBrowser.contentWindow.location.href;
エラー:
:クラスUnnamedClassvar url = window.content.location.href;
試み4のオブジェクトのラッパーを作成する権限拒否
エラー:プロパティ 'href'へのアクセスが拒否されました
試み5:
var currentWindow = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("navigator:browser"); var currBrowser = currentWindow.getBrowser(); var url = currBrowser.currentURI.spec;
エラー:クロームのためにこれをコーディングプロパティXPCComponents.classes
を取得するために拒否されたアクセス許可が風でした。なぜこれがFFのためにとても厳しいのか分かりません。
誰でも解決策がありますか?
https://developer.mozilla.org/en/Code_snippets/Tabbed_browser&uは 'alert' URLにしてみてくださいでした? – linguini
エラーメッセージは、特権のないコードを実行していることを示しています(通常、試行3が正しい方法です)。特権を持たないコードは、ブラウザのユーザーインターフェイスの期間にアクセスすることはできません。このコードをどのように実行しているのかを説明すると、誰かが特権を持たない理由を教えてくれるかもしれません。 –