我正在开发一个扩展,它应该监控远程服务器上的文件,如果文件发生变化(实际上它会附加一些文本),则需要下载该文件的更改(附加)部分。
所以,这是一个例子:
首先,文件内容是“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/