小编KF *_*Lin的帖子

Chrome扩展程序:检查是否已注入内容脚本

我正在开发Chrome扩展程序.我没有使用manifest.json匹配所有URL的内容脚本,而是chrome.tabs.executeScript在用户单击扩展图标时通过调用来懒惰地注入内容脚本.

我正在尝试的是避免多次执行脚本.所以我在我的内容脚本中有以下代码:

if (!window.ALREADY_INJECTED_FLAG) {
    window.ALREADY_INJECTED_FLAG = true
    init() // <- All side effects go here
}
Run Code Online (Sandbox Code Playgroud)

问题#1,chrome.tabs.executeScript每次点击扩展图标时这是否足够安全?换句话说,这是幂等的吗?

问题#2,是否有类似的方法chrome.tabs.insertCSS

似乎无法在backgroud脚本中检查内容脚本注入状态,因为它无法访问网页的DOM.我已经尝试了ping/pong方法来检查任何内容脚本实例是否存活.但这会带来设计ping超时的开销和复杂性.

问题#3,任何更好的后台脚本方法来检查内容脚本的注入状态,所以我可以阻止chrome.tabs.executeScript每次用户点击图标时调用?

提前致谢!

javascript google-chrome google-chrome-extension

9
推荐指数
2
解决办法
3613
查看次数

if ["$ { - #*i}"!="$ - "]是什么意思?

在我的Oracle Linux框中,我发现了一块/etc/profile很难理解的脚本:

for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null 2>&1
        fi
    fi
done
Run Code Online (Sandbox Code Playgroud)

我的问题是在if语句中的变量${-#*i}$-.那是什么意思?为什么要添加else语句来重定向输出?谢谢!

linux bash shell

2
推荐指数
1
解决办法
531
查看次数

Vim:如何通过单个命令在当前目录下的所有文件上运行`:TOhtml`?

我刚刚找到了非常有用的命令:TOhtml,现在我期待一个可以:TOhtml在当前目录中自动运行的命令或插件,即转换给定路径下的所有源代码,并保留目录结构.

有什么建议?

vim

1
推荐指数
1
解决办法
405
查看次数