我编写了一个Firefox扩展,需要后台文档的URL。通常情况下,JavaScript的document.URL
可以实现这一点 - 但这是不同的。
请参阅下面的示例:
可以看到,有4个标签打开:
并且,当前正在查看的页面是StackOverflow.com( ..确实)。
我的问题是:如何检索用户活动窗口的网址? (即 http://www.stackoverflow.com )。
以下是panel.html
代码。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href=panel.css rel="stylesheet" type="text/css">
</head>
<body>
<header><h3>Where aM I</h3></header>
This Mozilla extension will display the current <i>background</i> URL
<main>
<fieldset>
<legend>Click the Button</legend>
<button onclick="PageViewing()">Fetch</button>
</fieldset>
</main>
<script>
function PageViewing() {
alert(document.URL);
}
</script>
</body></html>
修改
如果放在main.js
文件中,则此代码段有效:
var tabs = require("sdk/tabs");
console.log("URL of active tab is " + tabs.activeTab.url); //yields SO.com
因此,在我的示例的上下文中,我如何从P-Name / lib 中检索它,以便在P-Name / data 目录中使用 - 作为变量?
答案 0 :(得分:2)
您必须在模块和内容脚本之间建立通信协议。这是通过port
完成的。
在你的main.js
中panel.port.on('askactivetaburl', function(){
panel.port.emit('sentactivetaburl', tabs.activeTab.url);
})
并在您的面板脚本中
self.port.on('sentactivetaburl', function(activetaburl){
// work with activetaburl
});
self.port.emit('askactivetaburl');