2016-04-26 1 views
0

私はクロムエクステンションに取り組んでいます!私の拡張機能は、ユーザからの入力を受け取り、ボタンをクリックすると、ページにリダイレクトされ、特定のテキストフィールドに入力されたデータを埋めます。 私はページにリダイレクトすることができますが、idの名前を使用して要素を取得しようとすると、エラーが発生します。ページが適切に読み込まれる前にjavascriptが実行されているためです。私は試しましたが、方法を見つけることができませんでした!私はこの機能を持っている私のコンテンツスクリプトでクロム拡張で読み込まれたページの後にJavascriptをトリガする方法は?

:あなたはlocation.replaceを呼び出すと、新しいページをロードしている、あなたの現在のドキュメントは、あなたがこの文書に注入されたコンテンツスクリプトがないことを意味している

function redirect(data) 
{ 
location.replace("xyz.html"); 
     window.onload = function() 
     { 
      alert(); 
      var textField = document.getElementById("textField"); 
      textField.value = data ; 
     } 
} 

答えて

0

閉じられます作業。

は、chrome.storageまたはbackground pageに保存し、あなたがAからデータを取得するとき1の回避策は次のようになり、あなたはページAに現在ある、ページBにリダイレクトしたいとBにリダイレクトする場合、その後、chrome.storageからデータを取得したり、 persistent page

サンプルコードは次のようになります。

chrome.storage.local.get("data", function(results) { 
    var data = results.data; 
    var textField = document.getElementById("textField"); 
    if (textField) { 
     textField.value = data; 
    } else { 
     chrome.storage.local.set({"data": "your data here"}); 
     redirect("your data here"); 
    } 
}); 

function redirect(data) { 
    location.replace("xyz.html"); 
} 
+0

申し訳ありませんが、私はあまり理解していませんでした! –

+0

@Ram、サンプルコードが追加されました。私はあなたがいつでもデータとtextFieldを取得しようとすることができることを意味します。textFieldが未定義でない場合は、コンテンツスクリプトがリダイレクトされたページで実行されていることを意味します。それ以外の場合は、元のページにあり、リダイレクトするだけです。 –

+0

と私はどのようにクロムストレージにそれを保存することができますか? chrome.storage.local.getを使用しましたが、最初に保存する方法は?または私はちょうどこれを貼り付けるべきですか? –

関連する問題