javascript - 具有自定义 XMLHttpRequest 的 Google Chrome 扩展

标签 javascript google-chrome google-chrome-extension xmlhttprequest

我正在开发一个扩展,它应该监控远程服务器上的文件,如果文件发生变化(实际上它会附加一些文本),则需要下载该文件的更改(附加)部分。

所以,这是一个例子:

首先,文件内容是“abcd”。扩展已经得到了这部分。比有人在服务器上向文件添加一些内容,它将是“abcdefg”。这里的扩展应该只得到这个“efg”,而不是全部内容。这可能与 chrome 和 XMLHttpRequest 相关吗?

我为 FireFox 做了这个扩展,并使用了 XMLHttpRequest.setRequestHeader("Range", "bytes=4-6"(对于这种特殊情况),但在 Chrome 中这样做会导致安全违规。

此外,有没有办法在 Chrome 中设置 XMLHttpRequest.setRequestHeader("Accept-Encoding", null) ?我需要它来避免对 zip 格式的打包响应。

最佳答案

这是一个简单的工作示例。我希望它能帮助你找到你的问题。

此扩展程序从 http://lists.w3.org/ 页面下载 4 个 1024 字节的 block ,并在后台页面控制台中显示 chop 的 block 。

list .json

{
  "name": "test",
  "version": "0.0.1",
  "background_page" : "background.html",
  "permissions": [ "http://lists.w3.org/" ]
}

背景.html

<!DOCTYPE html>
<html>
<head>
  <meta charset='utf-8'>
  <title>background page</title>
  <script type="text/javascript" src="background.js"></script>
</head>
<body>
</body>
</html>

背景.js

var index = 0;

function readBlock() {
  var request = new XMLHttpRequest();
  request.open("GET", "http://lists.w3.org/");
  request.setRequestHeader("Range", "bytes=" + index + "-" + (index + 1023));
  request.addEventListener("load", function() {
    console.log(index, request.response.substring(0, 100) + " ...");
    index += 1024;
    if (index < 4 * 1024)
      readBlock();
  }, false);
  request.send();
}

readBlock();

关于javascript - 具有自定义 XMLHttpRequest 的 Google Chrome 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8645897/

相关文章:

javascript - 我需要包装数组的每个元素,甚至是子元素,我正在使用 JavaScript

jQuery $(document).keydown() 问题

javascript - 确定运行更新脚本的理想间隔时间

javascript - 如何控制 Tamper Monkey 仪表板安装的脚本,以便用户无法禁用脚本

google-chrome - Chrome 扩展 oAuth 请求重定向页面未加载

javascript - 在 IIFE block 中定义一个变量

javascript - 一个令人困惑的 JavaScript ES6 字符串模板语法示例

javascript - 如何使文本框显示一个值,但单击时显示另一个值?

javascript - 为什么 onclick 不适用于 Google Chrome 扩展中的按钮,但适用于 DIV

javascript - 无需 JavaScript 即可加载当前页面的书签?