【问题标题】:Safari Web Extension - injecting script only when extension button is clickedSafari Web 扩展 - 仅在单击扩展按钮时注入脚本
【发布时间】:2020-07-07 11:57:17
【问题描述】:

为了简单起见,我参考了 Apple 的 SeaCreator 扩展示例。

您可以从这里获取:https://drive.google.com/file/d/1loBDgkJAEtyh0QehOUlgOSyUnW9ZZDk6/view?usp=sharing

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

问题是当我们点击扩展图标时,它会变成蓝色,表示扩展处于活动状态,并且每当呈现任何页面时,所有鱼名都会自动替换为表情符号。

看截图->

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

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

//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 的示例。

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

如果有人可以提供帮助,请告诉我。

【问题讨论】:

    标签: javascript swift safari-extension manifest.json sfsafariviewcontroller


    【解决方案1】:

    哦,这太奇怪了。我这么晚了,除了'content_script'键之外,我还必须在 manifest.json 中包含background 脚本键。

    "background" : {
        "scripts" : [
          "bundle.js"
        ]
      },
      "content_scripts": [{
          "js": [ "init.bundled.js" ],
          "matches": [ "<all_urls>" ]
      }]
    

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

    哇哦。

    【讨论】:

    • 如果你能支持我就太好了,我正在寻找 2 周的时间来获取任何加载网页上的密码输入字段。你能在这里支持我吗?
    • 你有什么问题?但是,我是 iOS 本地开发人员,对我来说,进行扩展只是一个星期的工作,这已经是预先构建的,我只是对其进行了一些更改。你能详细说明你的问题吗?如果它与 Web 更相关,我将是错误的人来解决这个问题。
    • 感谢@Paresh 的回复 我的要求如下:验证当前页面是不是登录页面,目前我已经通过检查当前页面中是否存在输入类型密码来完成。最终一切正常,但在 4-5 次刷新后突然无法正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多