【问题标题】:Chrome extension with tabs带有标签的 Chrome 扩展程序
【发布时间】:2012-06-19 21:53:58
【问题描述】:

我过去三天一直在尝试完成这项工作,所以请不要回复 chrome API 的链接或类似的东西。

我正在开发一个与 mySql 数据库通信的 Chrome 扩展程序,以获取用户最喜欢的网站以及每个网站的登录名/密码(比如说 facebook fbuser fbpass、google gguser ggpass...)

所以扩展的目标是为每个网站打开一个新标签,然后登录。

我已经建立了与数据库的通信,并且可以成功打开网站的新标签,但我一直在忙于在每个网站上插入用户名和密码。我的问题是我不能使用 document.getElementsById('input')... 因为它返回的是弹出窗口中的元素,而不是网页上的元素。

所以我已经阅读了有关 chrome.tabs.executeScript() 的内容,并且正在尝试使用它(看来这是我访问网页 DOM 所需要使用的)。

所以我正在使用类似的东西:

chrome.tabs.create({"url": web[i],"selected":false},function(tab) {
        chrome.tabs.executeScript(tab.id, {file:"write.js"}, function(){
        });
        });

并且“write.js”必须进行自动填充。

所以这里开始我的问题:

我有一个“警报(“我在”);” write.js 中的消息,并且它永远不会显示(因此函数的其余部分永远不会被调用)。 (我在网上找到了这个函数“write.js”)。

在这里,我将发布我的弹出 html、清单和 js 的部分内容,也许我必须在那里更改一些内容,因为我已经尝试了我在大多数示例中看到的内容,但对我不起作用。

Manifest.json:

{
  "name": "MyExtension",
  "version": "1.0",
  "description": "My chrome extension",
  "icons":{
      "128":"icon_128.png"
  },
  "browser_action":   {
      "default_icon": "icon.png",
      "popup": "consulta_empleados.html"
  },
  "permissions": [
    "http://*/*",
    "https://*/*"
  ]
}

consulta_empleados.html(弹出窗口):

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Consulta Registro con AJAX</title>
<script src="ajax.js"></script>
</head>
<body>
<form name="form1" method="post" >
  <label>
  <div align="center">Email<br>
    <input type="text" name="email" id="email">
  </div>
  </label>
  <p align="center">
    <label>
    <input type="submit" name="open" id="open" value="Log In" onClick="runScript()">
    </label>
  </p>
</form>
<div id="resultado"></div>
<div id="prova"></div>
</body>
</html>

文件 ajax.js:

function runScript(){
      ...
      //here I fill a vector with the usernames, the websites and the passwords from the data coming from my database. var num is the number of websites
      ...
  var i=0;
  while(i<num){
    chrome.tabs.create({"url": web[i],"selected":false},function(tab) {
        chrome.tabs.executeScript(tab.id, {file: "write.js"}, function(){

        });
        });
    i++;
  }

}

write.js:
function write() {
     ...
      alert("I'm in");
     ...      
} 
write();

提前致谢。

【问题讨论】:

  • 您是否尝试过使用内容脚本代替executeScript?值得一试。如果没有帮助,请告诉我 - 我会尝试调试您的扩展程序。

标签: javascript google-chrome tabs google-chrome-extension autofill


【解决方案1】:

恕我直言,而不是“选择”:假你需要“活跃”:假

您也可以在 chrome.tabs.executeScript 之前添加另一个警报,以查看是否正在调用 chrome.tabs.create 的回调

【讨论】:

  • 我得到了完全相同的结果。我也尝试在 chrome.tabs.create 的回调函数中放置另一个警报,但从未显示。
  • 所以你甚至没有创建标签?还是创建了标签,但是没有调用回调?
  • 是的,标签已创建,但未调用回调。
【解决方案2】:

看看你的开发工具控制台,肯定有一些错误信息。 使用 contentscript 需要tabs 权限

{
  "name": "My extension",
  ...
  "permissions": [
    "tabs", "http://www.google.com/*"
  ],
  ...
}

【讨论】:

    猜你喜欢
    • 2016-05-13
    • 2015-08-30
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2019-01-17
    • 1970-01-01
    相关资源
    最近更新 更多