在新窗口中打开XMLHttpRequest的responseText

时间:2016-07-25 01:35:44

标签: javascript ajax google-chrome-extension xmlhttprequest

有没有办法在新窗口中打开XMLHttpRequest的responseText作为工作网页?

详细信息:我正在构建一个chrome扩展,通过创建XMLHttpRequest并比较上一版本的responseText(来自background.js)来查找网站上的更改。找到更改后,它会通过Chrome通知通知用户。点击此通知后,我想打开一个包含此确切数据(xhttp.response)和原始网址的标签,而不向网站提出任何新请求。这对于此扩展在拍卖相关网站和Flash销售期间正常工作非常重要。请注意,我需要此应用程序在后台运行,甚至不占用chrome渲染图像/字体所需的资源(这就是为什么我没有使用名为Refresh Monkey的chrome扩展名)。我试过window.open('数据:text / xml,' + xmlhttp.responseText),但它似乎什么都没做!

如果无法做到这一点,那么我将只使用window.open(url)在新标签页中打开网页。这将再次加载整个网页,无论如何都要加载更快,因为我刚刚在XMLHttpRequest上加载了这个确切的URL。

1 个答案:

答案 0 :(得分:0)

我建议你拨打chrome.tabs.create来创建一个带有预定义本地html页面的新标签页。在该html页面中,您可以调用chrome.runtime.sendMessage通知后台页面已创建并希望检索responseText,收到响应后,将其显示在页面中。

示例代码:

背景页面:

chrome.tabs.create({ url: 'predefined.html' });

chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  if (request.action === 'getText') {
    sendResponse({text: 'YOUR RESPONSE TEXT HERE'});
  }
});

predefined.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <p id="textId"></p>
    <script src="predefined.js"></script>
</body>
</html>

predefined.js

chrome.runtime.sendMessage({action: 'getText'}, function(response) {
    document.getElementById('textId').innerText = response.text;
});