4

私はこの 3 日間をこの作業に費やしてきたので、chrome API へのリンクなどを返信しないでください。

mySql データベースと通信して、ユーザーのお気に入りの Web サイトと、この Web サイトごとのログイン/パスワードを取得する Chrome 拡張機能を開発しています (たとえば、facebook fbuser fbpass、google gguser ggpass としましょう...)

したがって、拡張機能の目的は、各 Web サイトの新しいタブを開き、ログインを行うことです。

データベースとの通信を確立し、Web サイトで新しいタブを正常に開くことができましたが、各 Web サイトにユーザー名とパスワードを挿入することに苦労しています。私の問題は、document.getElementsById('input')... を使用できないことです。これは、web ページではなくポップアップの要素を返すためです。

chrome.tabs.executeScript() について読んだので、それを使用しようとしています (Web ページの DOM にアクセスするために使用する必要があるようです)。

だから私は次のようなものを使用しています:

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

そして、「write.js」は自動入力を行う必要があります。

だからここで私の問題を始めます:

"alert("I'm in");" があります。メッセージは write.js 内にあり、表示されることはありません (したがって、関数の残りの部分は呼び出されません)。(インターネットでこの関数「write.js」を見つけました)。

ここでは、ポップアップ html、マニフェスト、および js の一部を投稿します。ほとんどの例で見たものを試してみましたが、うまくいかないため、何かを変更する必要があるかもしれません。

マニフェスト.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();

前もって感謝します。

4

2 に答える 2

0

"selected":false の代わりに私見 "active":false が必要です

chrome.tabs.executeScript の前に別のアラートを追加して、chrome.tabs.create のコールバックが呼び出されているかどうかを確認することで、これを確認することもできます。

于 2012-06-17T20:29:07.817 に答える