2013-03-20 12 views
5

私のウェブページのHTMLコードにこのjs関数があります。クロム拡張コンテンツスクリプトからウェブページjsを実行

function update() { 
    document.getElementById("textbox ").value = updatetext; 
} 

クロムコンソールから「update()」を実行すると動作します。
しかし、私はChromeの拡張機能、

chrome.tabs.executeScript(tab.id, {code: "update();"}, function(result){}); 

から実行する場合は、更新が定義されていないと言います。しかし、 "alert( 'ok')"と置き換えれば、それは動作します。
それから私はクロームの拡張コンテンツスクリプトで

eval("update()") 

を実行します。また、「更新が定義されていません」と表示されます。

ウェブページでjs関数を呼び出すにはどうすればよいですか?

+0

[クローム拡張を構築することができ、重複する - コンテンツのスクリプトを使用して、ページにコードを挿入](http://stackoverflow.com/questions/9515704/building-a-chrome-extension-inject-code-in-a-page-using-a-content-script) – Xan

+0

さらにあなたの質問に関してはコメント:[Background.jsからページレベルでコードを実行して値を返す](http://stackoverflow.com/questions/26140443/executing-code-at-page-level-from-background-js-and-returning) -the-value/26141393) – Xan

答えて

7

Chromeはサンドボックス内のコンテンツのスクリプトを実行するので、あなたは、Webページと対話するために、インラインスクリプトを挿入する必要があります。

var injectedCode = 'update()'; 
var script = document.createElement('script'); 
script.appendChild(document.createTextNode('('+ injectedCode +')();')); 
(document.body || document.head || document.documentElement).appendChild(script); 
+1

jsファンクションを実行していただきありがとうございますh戻り値?私はどのように戻り値を得ることができますか? @KAdot –

+0

戻り値を非表示のDOM要素のメンバーとして格納し、コンテンツスクリプトから読み取ることができます。 – KAdot

+0

コード例を投稿できますか?私はdocument.documentElement.setAttribute()を試してみましたが、String値のみを設定でき、jsオブジェクトでは動作しません。 jsオブジェクトを返す方法はありますか? @KAdot –

関連する問題