给出一个html文件的url地址,如何阅读内容?

时间:2015-03-11 11:33:50

标签: javascript google-chrome-extension

我需要做一些简单的事情,

我有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松散相关)

1 个答案:

答案 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);