gpt4 book ai didi

javascript - 在 Chrome 扩展中执行使用 AJAX 检索到的 javascript

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

我正在编写一个 chrome 扩展,它使用内容脚本将 div 注入(inject)到网站中。内容脚本向我在manifest.json 文件中清除的网站发出AJAX 请求,并将数据插入带有innerHTML 的div 中。 AJAX 请求返回的部分内容是需要执行的 javascript。来自内容脚本内的 AJAX 请求工作正常。

当我从常规网站发出相同的 AJAX 请求时,返回的 javascript 执行得很好,但是当我从内容脚本发出 AJAX 请求时,它不会执行。控制台中不显示任何错误。如果可能的话,我不想重新加载网站。

我认为这是一个安全“功能”而不是一个错误。我怎样才能关闭或规避这种行为?

最佳答案

首先,Rob W 所说的非常重要,如果您还不知道,那么对内容脚本运行的不同环境进行很好的解释是很有用的。

您可能想检查this出去。这不是 100% 你要找的东西,但主要部分就在那里。基本上,从您的后台页面(如果您还没有创建一个),您可以使用 chrome.tabs.executeScript() 来执行您下载的脚本。它在真实页面上下文而不是“内容脚本”上下文中运行 javascript。现在您需要的只是将该脚本(以字符串形式)发送到后台页面,并确定要在其上执行该脚本的 tabId(从发件人选项卡)

您可以使用chrome.extension.sendMessage将其发送到后台页面,并在background.js中使用 chrome.extension.onMessage通过您的脚本接收消息。从那里使用 sender 参数获取 tabId (sender.tab.id),并构建您的executeScript 调用。

还有一个有用的提示,默认情况下,chrome 中的页面脚本(动态 javascript 执行)不会以任何设置的方式显示在 chrome 调试器中,但您可以将如下内容附加到 javascript 的字符串中:“\n//@sourceURL=/myFolder/myDynamicJavascript.js”

这将使该脚本始终与 chrome 调试器的“/myFolder/myDynamicJavascript.js”路径一起显示,从而允许您在插入的 js 代码中设置断点。这是一个救星。

关于javascript - 在 Chrome 扩展中执行使用 AJAX 检索到的 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13971497/

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