Pet*_*ete 5 javascript google-chrome-extension
我正在构建一个 Google Chrome 扩展程序。基本设置是我有一个浏览器操作按钮,当点击它来做它的事情时,它会注入 jQuery 和另一位 JavaScript 到活动选项卡中。
这是我的第一个 Chrome 扩展程序,但似乎如果用户第二次单击按钮采取行动,脚本将被重新注入。这是一个问题,因为它将使用的主要页面都是 AJAX,因此页面内容发生了显着变化,但实际页面 URL 永远不会改变。
这是一个合理的问题,还是我想多了,是否有一种简单的方法可以防止脚本多次注入同一页面?我应该将这些指定为内容脚本吗?
这绝对是一个合理的担忧。
简单的方法是使用类似于#ifndef在 C 中包含守卫的机制。
定义一个在内容脚本执行后设置的标志,并在执行任何操作之前检查它是否已定义。从同一个扩展注入的所有脚本共享 JS 执行上下文,因此是全局范围。
您的内容脚本可能如下所示:
if (window.contentScriptInjected !== true) {
window.contentScriptInjected = true; // global scope
/* Do your initialization and work */
}
/* global function definitions */
Run Code Online (Sandbox Code Playgroud)
检查应使用显式true值以避免在页面上出现误报,因为页面上的元素的id属性意外等于变量名称 - 浏览器创建一个隐式全局变量,指向该 DOM 元素,以便if检查它会是真的。
| 归档时间: |
|
| 查看次数: |
2082 次 |
| 最近记录: |