使用ISOLATED
世界(Execution World)在Chrome扩展中执行脚本会创建一个与网页的主执行环境(Main World)完全隔离的新执行环境。这意味着在这个隔离的环境中运行的JavaScript代码将有其自己的全局对象、函数和变量,与网页主执行环境中的对象、函数和变量不会有任何交互。
主要效果:
-
隔离和安全性:由于隔离世界与主世界是独立的,因此它提供了一层额外的安全性。这意味着网页上的脚本不能访问或修改在隔离世界中设置的变量或函数。
-
避免命名冲突:由于隔离世界有其自己的全局作用域,因此你不必担心全局变量或函数名与网页上现有的代码冲突。
-
独立的DOM访问:虽然隔离世界中的代码不能访问主世界的JavaScript对象和变量,但它们可以访问和修改同一个DOM。这意味着你可以安全地更改页面内容,而不影响页面上其他脚本的行为。
-
独立的事件监听器:在隔离世界中添加的事件监听器与主世界中的事件监听器是独立的,这有助于避免不必要的干扰。
示例:
假设你使用ISOLATED
世界运行以下代码:
chrome.scripting.executeScript({
target: { tabId: tabId },
world: 'ISOLATED',
function: function() {
var myVar = 'Hello, World!';
console.log(myVar);
}
});
在这种情况下,变量myVar
和console.log(myVar);
的输出将仅在这个隔离的执行环境中存在和可见,而网页的主执行环境将无法访问或看到这些。
使用ISOLATED
世界是一种很好的方式,特别是当你想确保你的扩展代码不会与网页上的其他代码相互干扰时。