我想创建一个靠近GmailChecker的chrome扩展程序。我已经看过它的源代码,但是,它有点复杂。它似乎使用了一些AJAX。
我尝试使用jQuery,但它在这种情况下无法工作(无法访问托管在其他服务器上的网站......而且这是Chrome的扩展,该脚本无法从同一服务器执行。
顺便说一句,我不确定我想做什么是可能的。我还不太了解chrome扩展,所以我需要你的帮助。
我想这样做: 在后台页面中,定期使用cookie-session加载页面(用于浏览具有登录系统的网站)。然后获取加载页面的源代码,然后做一些事情(如果他有消息就对用户说,但是meh,这不是主题,也不是我认为的问题)。
所以我至少需要:
我可以使用Chrome扩展程序执行此操作(如果可以,您可以给我一些功能或提示吗?)
谢谢!
清单:
{
"manifest_version": 2,
"name": "My Extension",
"version": "1",
"description": "Yeah, cool ext",
"browser_action": {
"default_popup": "file.html"
},
"permissions": ["tabs",
"background",
"*://*.google.com/"],
"background": {
"page": "background.html"
}
}
background.html:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script src='script.js'></script>
</body>
</html>
script.js:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
console.log(xhr.responseText); //that's the source code
};
xhr.open("GET", "http://www.google.com", true);
xhr.send();
答案 0 :(得分:3)
是的,你可以用简单的AJAX调用来做那些:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
xhr.readyState == 4 && console.log(xhr.responseText);//that's the source code
};
xhr.open("GET", "http://www.google.com", true);
xhr.send();
或者在jQuery中:
$.get("http://www.google.com/", function(data){
console.log(data);
});
由于这是一个扩展程序,如果您已在清单中正确声明了您需要访问的网站,那么可以直接请求另一个网站,而无需已启用跨源资源共享。您不需要中间的服务器为您执行请求,并让您的服务器返回以获取结果。 不需要JSONP。
Google在扩展程序中有一个关于跨域请求的页面。您可以在此处阅读更多内容:https://developer.chrome.com/extensions/xhr#requesting-permission
通过将主机或主机匹配模式(或两者)添加到清单文件的权限部分,扩展程序可以请求访问其来源之外的远程服务器。