我需要做一些简单的事情,
我有canvas.html
<div id="dialog" title="Basic dialog">
<p>Something.</p>
</div>
现在我想阅读canvas.html
function LoadPage(href)
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", href, false);
xmlhttp.send();
return xmlhttp.responseText;
}
...
var canvasPanelURL = "myfolder/canvas.html";
var content = LoadPage(canvasPanelURL);
..
上面的代码是正确的。
可悲的是,XMLHttpRequest
已被弃用,我想使用FileReader
,但输入是blob,而使用XMLHttpRequest
的任何其他方式都可以这样做吗?
修改
感谢您的评论,不推荐同步XMLHttpRequest
,
我只是想知道是否有任何其他替代方法在给定网址的情况下阅读html文件(我应该说,问题与XMLHttpRequest
松散相关)
答案 0 :(得分:1)
主线程(即运行javascript的线程)上的不幸同步请求已被弃用。
注意:从Gecko 30.0(Firefox 30.0 / Thunderbird 30.0 / SeaMonkey 2.27)开始,由于对用户体验的负面影响,主线程上的同步请求已被弃用。
但是,您仍然可以使用web worker运行同步网络请求。
使用Web worker的替代方法是在异步请求的回调中进行处理
function LoadPage(href, cb)
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", href, true);
request.onload = function() {
if (request.status >= 200 && request.status < 400) {
cb(request.responseText);
}
};
xmlhttp.send();
}
var canvasPanelURL = "myfolder/canvas.html";
LoadPage(canvasPanelURL, function(content) {
// do stuff with content
});
然后,您可以手动创建FileReader
,因为您可以从条目数组中创建Blob
(在您的情况下为1)。我不能说如果你已经使用AJAX加载了html文件,我可以理解你为什么要这样做。
var blob = new Blob([content]);
var reader = new FileReader();
reader.onloadend = function() {
console.log(reader.result);
};
reader.readAsBinaryString(blob);