gpt4 book ai didi

javascript - Chrome 控制台和页内 javascript 有什么区别?

转载 作者:行者123 更新时间:2023-11-28 04:35:25 25 4
gpt4 key购买 nike

此 JavaScript 语句在 5 个月前在以前的 Chrome 版本中有效(作为 Chrome 扩展 content.js 的一部分):

require(["function-widget-1:share/util/service/createLinkShare.js"]).prototype.makePrivatePassword=function(){return prompt("Some Massage:","")};

但现在(在最新的 Chrome 中,作为 Chrome 扩展 content.js 的一部分)它无效,并且错误消息是“Uncaught ReferenceError:require 未定义”。

但是,如果我在 Chrome 控制台(如在开发人员工具中)中输入相同的语句,它现在(在最新的 Chrome 中)仍然有效。

所以我的问题是:这两种情况有何不同?

最佳答案

您所看到的内容称为 "Isolated world" :

Content scripts execute in a special environment called an isolated world. They have access to the DOM of the page they are injected into, but not to any JavaScript variables or functions created by the page. It looks to each content script as if there is no other JavaScript executing on the page it is running on. The same is true in reverse: JavaScript running on the page cannot call any functions or access any variables defined by content scripts.

本质上,内容脚本在附加到同一 DOM 树的完全独立的 JS 上下文(认为是“虚拟机”)中运行,并且看不到彼此的代码。

使用开发工具控制台时,您可以通过其上方的下拉菜单(最初显示“顶部”)来切换 JS 上下文。它应该列出已经存在的内容脚本上下文。

可以跨越边界并在页面自己的上下文中运行一些代码;这种技术通俗地称为“注入(inject)脚本”(不要与内容脚本的编程注入(inject)混淆)或“页面级脚本”,并且由 this question 规范涵盖。 .

但是,任何跨越此边界的代码都会变得难以通信 - 因为它与页面自己的代码无法区分,如上所述,页面自己的代码对于内容脚本来说是不可见的。涉及此的几个问题:with content script , with background .

关于javascript - Chrome 控制台和页内 javascript 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44256221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com