我正在开发一个扩展,这应该做远程服务器上的文件监控,如果文件更改(实际上它将由一些文本追加)这个文件的变化(追加)部分将需要下载。
所以,这里有一个例子:
首先,文件内容是"abcd“。Extension已经得到了这个部分。然后有人在服务器上添加一些内容到文件中,它将是"abcdefg“。这里的扩展应该只获取这个"efg“,而不是整个内容。使用chrome和XMLHttpRequest可以做到这一点吗?
我已经为FireFox做了这个扩展,并使用了XMLHttpRequest.setRequestHeader("Range","bytes=4-6“)(对于这种特殊情况),但在Chrome中这样做会导致安全冲突。
另外,有没有办法在Chrome中设置XMLHttpRequest.setRequestHeader("Accept-Encoding",(空)?我需要它,以避免打包响应为zip格式。
发布于 2011-12-28 06:58:30
下面是一个简单的工作示例。我希望它能帮助你找到你的问题。
此扩展从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();https://stackoverflow.com/questions/8645897
复制相似问题