使用chrome扩展程序进行查询并获取源代码

时间:2014-04-19 22:58:40

标签: javascript jquery ajax google-chrome google-chrome-extension

我想创建一个靠近GmailChecker的chrome扩展程序。我已经看过它的源代码,但是,它有点复杂。它似乎使用了一些AJAX。

我尝试使用jQuery,但它在这种情况下无法工作(无法访问托管在其他服务器上的网站......而且这是Chrome的扩展,该脚本无法从同一服务器执行。

顺便说一句,我不确定我想做什么是可能的。我还不太了解chrome扩展,所以我需要你的帮助。

我想这样做: 在后台页面中,定期使用cookie-session加载页面(用于浏览具有登录系统的网站)。然后获取加载页面的源代码,然后做一些事情(如果他有消息就对用户说,但是meh,这不是主题,也不是我认为的问题)。

所以我至少需要:

  • 使用Cookie和会话进行查询
  • 访问网页主页的源代码
  • 在后台页面中完成所有这些操作(隐藏和分隔 用户浏览)。

我可以使用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();

1 个答案:

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

  

通过将主机或主机匹配模式(或两者)添加到清单文件的权限部分,扩展程序可以请求访问其来源之外的远程服务器。