首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Safari Web扩展-只在单击扩展按钮时注入脚本

Safari Web扩展-只在单击扩展按钮时注入脚本
EN

Stack Overflow用户
提问于 2020-07-07 11:57:17
回答 1查看 1.4K关注 0票数 0

为了简单起见,我参考了来自苹果的SeaCreator扩展示例。

你可以从这里拿下来:https://drive.google.com/file/d/1loBDgkJAEtyh0QehOUlgOSyUnW9ZZDk6/view?usp=sharing

在这个例子中,我们用不同的表情符号替换鱼名。

问题是,当我们点击扩展图标时,它会变成蓝色,以表示扩展是活动的,并且每当呈现任何页面时,所有的鱼名都会被自动替换为emojis。

见截图->

我需要的是,我不想让扩展总是处于活动状态,我希望只有当我按下扩展按钮时才能执行替换操作。因此,每当我打开一个新的网页,我必须按下扩展工具栏按钮,只有当替换应该完成。

在我附加的代码中,我确实尝试了很少的东西,但没有任何帮助。

代码语言:javascript
运行
复制
//browser.runtime.addEventListener("message", handleMessage, false);
//function handleMessage(msgEvent) {
//    alert('message received');
    var wordReplacementMap = {"Fish": "", "Shark": "", "Squid": "", "Whale": ""};
    for (var wordToReplace in wordReplacementMap) {
        replace(document.body, wordToReplace, wordReplacementMap[wordToReplace]);
    }
//}

//chrome.runtime.sendMessage("message");

我总是面对->未定义的browser或未定义的chrome

在我最初的扩展项目中,我使用了节点模块和AJAX,所以有很多依赖项,所以我引用了Apple的例子。

主要是我想关闭自动脚本注入,只在用户点击扩展按钮时执行我的脚本代码。我不需要弹出-只是按下按钮执行。

如果有人能帮忙请告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-19 08:13:13

哦,太奇怪了。我知道得太晚了,所以除了“background”键之外,还必须在manifest.json中包含content_script脚本键。

代码语言:javascript
运行
复制
"background" : {
    "scripts" : [
      "bundle.js"
    ]
  },
  "content_scripts": [{
      "js": [ "init.bundled.js" ],
      "matches": [ "<all_urls>" ]
  }]

我已经在chrome.browserAction.onClicked...中编写了bundle.js方法,每次我按下Safari工具栏中的扩展按钮时都会调用这个方法。

呼。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62774734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档