有没有办法在新窗口中打开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。
答案 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;
});