如何解决Safari网页扩展Popup窗口获取当前页面URL无效的问题
Safari扩展popup获取当前页面URL的解决方法
问题原因
你当前使用的是旧版Safari App Extensions的API(safari.application),而现代Safari网页扩展基于WebExtensions标准,不再支持这套旧API,因此代码无法运行。
解决步骤
1. 配置Manifest文件(必须)
确保你的扩展manifest.json中声明了tabs权限,并且使用正确的manifest版本(推荐v3):
{ "manifest_version": 3, "name": "你的扩展名称", "version": "1.0", "permissions": ["tabs"], "action": { "default_popup": "popup.html" } }
2. 修改popup.js代码
使用WebExtensions标准的tabs.queryAPI获取当前活动标签页的URL,替换旧的代码:
console.log("Hello World!", browser); async function getCurrentTabUrl() { try { // 查询当前窗口的活动标签页 const tabs = await browser.tabs.query({ active: true, currentWindow: true }); if (tabs.length > 0) { // 将URL显示到页面元素中 document.getElementById("demo").innerHTML = tabs[0].url; } else { document.getElementById("demo").innerHTML = "未找到活动标签页"; } } catch (error) { console.error("获取URL失败:", error); document.getElementById("demo").innerHTML = "获取URL出错"; } } // 调用函数执行 getCurrentTabUrl();
额外说明
- Safari同时支持
browser和chrome命名空间,你也可以将browser.tabs.query替换为chrome.tabs.query,用法完全一致。 - 如果你的扩展使用manifest v2,权限配置逻辑相同,只是manifest结构略有差异。
内容的提问来源于stack exchange,提问作者baileymiller2017
相关产品推荐
相关产品推荐

