【发布时间】:2014-05-05 05:45:15
【问题描述】:
我编写了一个需要后台文档 URL 的 Firefox 扩展。通常,JavaScript 的 document.URL 可以实现这一点 - 但这是不同的。
请看下面我的例子:
可以看出,打开了 4 个标签:
- BBC 主页
- 插件管理器
- 亚马逊网站
- 堆栈溢出
而且,当前正在查看的页面是 StackOverflow.com(.. 确实)。
我的问题是:如何检索用户活动窗口的 URL? (即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文件中,这段代码sn-p可以工作:
var tabs = require("sdk/tabs");
console.log("URL of active tab is " + tabs.activeTab.url); //yields SO.com
因此,在我的示例中,我如何从 P-Name/lib 中检索它,以便在 P-Name/data 目录中使用 - 作为多变的?
【问题讨论】:
-
您将很难使用 HTML 用户界面(而不是 XUL)构建您的扩展。如果您坚持这样做,您将需要从您的非特权 HTML DOM 中提供对特权 JavaScript 代码的访问权限。请参阅stackoverflow.com/questions/13843315/… 和stackoverflow.com/questions/13843315/… 了解如何操作... [继续]
-
...那些处理
Browser元素中的HTTP服务页面,但您可以轻松地从这些帖子中获取“安装特权方法”部分并直接使用它们。 -
@David-SkyMesh(注册链接)“bootstrap.js”是用户定义的文件,还是您可能指的是“main.js”?我的项目是使用
cfx init创建的 -
我不认为我使用了“用户定义”这个短语。您的扩展程序使用 addon-sdk。您已经使用 HTML(而不是使用 XUL 覆盖)为您的扩展构建了 GUI。因为 HTML DOM 是非特权的,所以它不能直接运行特权函数。没有简单的方法可以做你想做的事。要么将你的 GUI 实现为 XUL 覆盖,要么做大量的工作来让你的特权函数可以从 HTML DOM 运行(我在上面提供了两个关于如何做到这一点的链接)。
标签: javascript firefox firefox-addon xul firefox-addon-sdk