You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 02:50:27