2015-04-25 2 views
1

Я делаю надстройку для Firefox с помощью SDK Add-on и мне нужно каким-то образом получить активный URL-адрес вкладок над содержимым надстройки, всякий раз, когда вкладка создается или переключается к.Отправка URL текущей вкладки в контент плагина

Мой main.js выглядит следующим образом:

var { ToggleButton } = require('sdk/ui/button/toggle'); 
var panels = require("sdk/panel"); 
var self = require("sdk/self");  

var button = ToggleButton({ 
    id: "my-button", 
    label: "my button", 
    icon: { 
    "16": "./img/icon-16.png", 
    "32": "./img/icon-32.png", 
    "64": "./img/icon-64.png" 
    }, 
    onChange: handleChange 
}); 

var panel = panels.Panel({ 
    width: 640, 
    height: 400, 
    contentURL: self.data.url("index.html"), 
    onHide: handleHide 
}); 

function handleChange(state) { 
    if (state.checked) { 
    panel.show({ 
     position: button 
    }); 
    } 
} 

function handleHide() { 
    button.state('window', {checked: false}); 
} 

index.html, которая загружается в панель имеет некоторый встроенный JavaScript и где мне нужно отправить текущий URL в.

Я просмотрел документацию here, но он говорит о «содержании-сценариях», о чем я не уверен, если я даже использую или должен использовать.

Итак, каков самый быстрый способ сделать это? Благодарю.

ответ

2

Вам нужно использовать модуль sdk/tabs:

var tabs = require("sdk/tabs"); 

var activeTabURL = tabs.activeTab.url; 

tabs.on("activate", tab => { 
    activeTabURL = tab.url; 
}); 

tabs.on("ready", tab => { 
    if (tab == tabs.activeTab) { 
    activeTabURL = tab.url; 
    } 
}); 

С этой переменной activeTabURL будет содержать URL активной вкладки.

+0

Спасибо, это прекрасно работает, но как отправить эту переменную в мой html-файл? – Chris

+0

Мне удалось указать url в поле ввода 'hidden', но я хочу передать его как переменную JavaScript из скрипта страницы во встроенный JavaScript моего html-файла. – Chris