我今天开始编写自己的Chrome扩展程序,因为出现一个问题,我已经陷入困境。 现在,我将当前的URL从打开的网站发送到我的服务器,在那里根据一些标准检查它,然后将返回值发送回扩展。到目前为止这是有效的。我只使用popup.html,没有背景页面。 该请求仅在用户单击浏览器中的图标时发送。 如何在页面加载时自动发送请求?
如果服务器存在特定的返回值,则应向用户发出不正确的警告。警报框和新窗口......好......很烦人。最好的方法应该是扩展图标下的小弹出窗口,但如果没有用户的点击,这是不可能的。所以我想到了页面顶部的一个小层。
<html>
<head>
<script>
window.addEventListener("load", sendRequest, false);
function sendRequest() {
var q = "test";
xmlHttp=new XMLHttpRequest();
xmlHttp.open('GET', 'http://www.testurl.com/check.php?q='+q, true);
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4) {
document.getElementById("textf").innerText = xmlHttp.responseText;
chrome.tabs.executeScript(null,{code:"<div style='position: absolute; top: 0; left: 0; background-color=blue;layer-background-color: blue;'><p>test </p><p>test2 </p></div>"});
}
}
xmlHttp.send(null);
}
</script>
</head>
<body>
//Just for the popup...
<font color="blue"><p id="textf">Checking...</p></font>
</body>
</html>
如果我这样做
chrome.tabs.executeScript(null,{code:"alert('testalert')"});
它给了我警报。但是,这不起作用,我无法弄清楚原因:(
我是否需要所有这些背景页面,因为我只想在页面加载时检查URL? 为什么一切不起作用但警报是?
提前谢谢!
答案 0 :(得分:0)
chrome.tabs.executeScript
仅适用于JavaScript。要向Web页面添加内容,您必须编写用于操作DOM的JavaScript。您开始学习这个的好地方可能是Mozilla's DOM docs。 (DOM是W3C标准,Chrome已实现它,所以是的,Mozilla页面在这里是相关的。)
如果我可以这样说,这听起来像你最好的方法是废弃这个并重新开始使用清单中定义的内容脚本,以便Chrome为你执行它;查看the Content Scripts documentation了解详情。由于您尝试在没有后台网页的情况下完成目标,因此需要直接在内容脚本中使用XMLHttpRequest,因此您应该在清单中添加"minimum_chrome_version": "13"
,因为Chrome 12及更早版本不会让您这样做这一点。
顺便说一下,当你使用“-layer”和“-thing”之类的时候,几乎没有人会理解你在说什么。请务必小心确保使用正确的术语。如果你不确定正确的术语,请询问你的同行。