2016-05-04 32 views
0

Chromeの拡張機能のコンテンツスクリプトにあるブラウザのページにあるjavascript関数を呼び出そうとしています。これは可能ですか?Chrome拡張機能:コンテンツスクリプトのページからjavascript関数を呼び出します。

たとえば、関数findCustomer()はページで使用できます。現在、ブラウザコンソールでfindCustomer( "XXXXXXX")を実行すると、顧客の名前が正常に返されます。コンテンツスクリプトからこのスクリプトをどのように実行することができますか?

私は、コンテンツスクリプトから、このようなコードを持っている:

var customerId = "1234567"; 
alert(customerId); // This will display the customer ID on an alert 
var customerName = findCustomer(customerId); // This is a javascript function on the page 

私はこれが十分に明確であると思います。

答えて

0

コンテンツスクリプトは、分離された世界と呼ばれる特別な環境で実行されます。彼らは注入されたページのDOMにアクセスできますが、ページで作成されたJavaScript変数や関数にはアクセスできません。

var injectedCode = '(' + function() { 
    var customerId = "1234567"; 
    alert(customerId); 
    var customerName = findCustomer(customerId); 

} + ')();'; 

var script = document.createElement('script'); 
script.textContent = injectedCode; 
(document.head || document.documentElement).appendChild(script); 
script.parentNode.removeChild(script); 

注:あなたがする必要がどのようなhttps://developer.chrome.com/extensions/content_scripts#execution-environment

は次のように、ページに<script>ブロックを注入されたコードは、その時点ですでに実行されているため<script>ブロックが、その後削除され、もはや必要ではありません。

+0

うわあ、ありがとう、それはとてもうまくいった! –

関連する問題