gpt4 book ai didi

javascript - 用于 chrome 扩展协议(protocol)的 XMLHttpRequest

转载 作者:行者123 更新时间:2023-11-30 13:27:55 27 4
gpt4 key购买 nike

我正在使用后台页面,我需要将一些代码注入(inject)当前选项卡内容。

所以我执行以下操作:

  • 定义 browser_action
  • 像这样定义监听器 chrome.browserAction.onClicked.addListener
  • 通过 chrome.tabs.executeScript 调用 content_scripts 加载的脚本

从页面内容中,我需要从扩展文件夹中加载 html 资源。

但是使用这个 XMLHttpRequest 给我错误 Cross origin requests are only supported for HTTP

由 XMLHttpRequest 处理错误 NETWORK_ERR: XMLHttpRequest Exception 101

那我应该怎么解决呢?

注意:地址类似于chrome-extension://someextensionid/file.html

最佳答案

解决使用:

btoa(loadXHR(chrome.extension.getURL('file.html')))

在哪里

  • btoa = 字符串转 base64
  • loadXHR = 同步 xm​​lhttprequest
  • chrome.extension.getURL = 扩展文件夹中的解析地址

这是在 background_page 中完成的,并在前台使用传递给脚本

chrome.tabs.executeScript

在前台,脚本将字符串转换为 html 字符串和 dom 对象

var div = document.createElement('div');
div.innerHTML = atob(tbr);
document.body.appendChild(div);

在哪里

  • document.createElement = 创建新的“”元素
  • innerHTML = div 元素的 HTML 值,因此设置它将创建 DOM 可解析内容
  • atob = base64 字符串到解码版本
  • document.appendChild = 将带有 HTML 内容的 div 附加到 body 元素

关于javascript - 用于 chrome 扩展协议(protocol)的 XMLHttpRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7849330/

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