带有自定义XMLHttpRequest的Google Chrome扩展程序

时间:2011-12-27 14:47:42

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

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

所以,这是一个例子:

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

的manifest.json

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

background.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>

background.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();