我正在开发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
每次用户点击图标时调用?
提前致谢!
在我的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语句来重定向输出?谢谢!
我刚刚找到了非常有用的命令:TOhtml
,现在我期待一个可以:TOhtml
在当前目录中自动运行的命令或插件,即转换给定路径下的所有源代码,并保留目录结构.
有什么建议?