gpt4 book ai didi

javascript - 从扩展程序中获取所选选项卡的 URL

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:17:29 26 4
gpt4 key购买 nike

我编写了一个需要后台文档 URL 的 Firefox 扩展。通常情况下,JavaScript 的 document.URL 可以实现这一点 - 但这是不同的。

请看下面我的例子:

shows the browser with several tabs opened and the extension panel displayed with a "fetch" button to alert the user to the current URL

可以看到,打开了4个标签页:

  • 英国广播公司主页
  • 插件经理
  • 亚马逊网站
  • 堆栈溢出

而且,当前正在查看的页面是 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 文件中,此代码片段有效:

    var tabs = require("sdk/tabs");
console.log("URL of active tab is " + tabs.activeTab.url); //yields SO.com

所以在我的示例中,我如何从 P-Name/lib 中检索它,以便在 P-Name/data 目录中使用 - 作为多变的? Terminal output showing files and directory structure

最佳答案

您必须在模块和内容脚本之间建立通信协议(protocol)。这是通过 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');

关于javascript - 从扩展程序中获取所选选项卡的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23465582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com