7

私はパネル内にいて、現在のブラウザの URL を取得したいと考えています。これまでのところ何も機能しません。これが私がテストしたものです:

何かを返すだけでも、次のようなものを取得しresource://jid0-18z0ptaugyu0arjkaoywztggyzg-at-jetpack/、現在のパネルリソースを取得します。明らかにこれはスコープの問題ですが、実際のブラウザを参照する方法がわかりません。

window.location.href 

これに関する最大のスタック オーバーフロー スレッドで文字通りすべてを試しました: Get current page URL from a firefox sidebar extension。それらのどれも何も返しません。

役立つ場合は、Firefox Addon Builder を使用しています。

4

6 に答える 6

14

サイドバーまたはポップアップから URL を取得する

サイドバーまたはポップアップから URL を取得するには、タブ権限が必要です

"permissions": [
    "tabs"
  ]

次に、必要なタブを見つける必要があります。アクティブなタブだけが必要な場合は、これで問題なく動作します。より高度なものについては、こちらを参照してください

function getPage(){
  browser.tabs.query({currentWindow: true, active: true})
    .then((tabs) => {
      console.log(tabs[0].url);
  })
}

注入された JavaScript から URL を取得する

バックグラウンド タスクの URL が必要な場合は、アクセス許可が不要なため、この方法をお勧めします。

これにより、バックグラウンド スクリプトが提供され、インターネット上のほぼすべての Web ページにスクリプトが挿入されます。

"background": {
    "scripts": ["background.js"]
},

"content_scripts": [
    {
      "matches": ["https://www.*"],
      "js": ["modify-page/URL.js"]
    }
  ],

これは、URL js を介して Web ページに挿入され、使用するバックグラウンド js にメッセージを送信します。

var service= browser.runtime.connect({name:"port-from-cs"});

service.postMessage({location: document.URL});

このコードはバックグラウンド js にあり、変更されるたびに新しいページの URL を収集します。

var portFromCS;

function connected(p) {
  portFromCS = p;
  portFromCS.onMessage.addListener(function(m) {
    if(m.location !== undefined){
      console.log(m.location);
    }
  });
}

browser.runtime.onConnect.addListener(connected);
于 2018-01-25T16:12:47.187 に答える
7
// you need to use this service first
var windowsService = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator);

// window object representing the most recent (active) instance of Firefox
var currentWindow = windowsService.getMostRecentWindow('navigator:browser');

// most recent (active) browser object - that's the document frame inside the chrome
var browser = currentWindow.getBrowser();

// object containing all the data about an address displayed in the browser
var uri = browser.currentURI;

// textual representation of the actual full URL displayed in the browser
var url = uri.spec;
于 2012-07-21T21:07:23.323 に答える
2

SDKのAPIを使用すると、次のtabsことができると思います。

// Get the active tab's title.
var tabs = require("tabs");
console.log("title of active tab is " + tabs.activeTab.title);
于 2012-07-23T05:57:31.827 に答える
1

API は、現在のタブの URL を取得するために

   var URL = require('sdk/url').URL;
   var tabs = require('sdk/tabs');
   var url = URL(tabs.activeTab.url);

   console.log('active: ' + tabs.activeTab.url);

これはコンソールに出力されます: " active: http://www.example.com "

于 2013-11-21T20:49:50.030 に答える
0

windowは、現在のウィンドウを提供します。 topは、最も外側のフレームを提供します。

于 2012-07-21T18:19:00.277 に答える
0

アドオンの場合、次のコードを使用してアドレスバーから URL を取得できます

Javascript コード:

function Doit(){
   var link = window.top.getBrowser().selectedBrowser.contentWindow.location.href;
   alert (link); 
}

HTML コード:

<div onclick = "Doit()">Generate URL</div>

これにより、ブラウザの現在のタブに表示される URL が生成されます。

于 2015-01-15T09:15:53.030 に答える