4

chorme 拡張機能の「コンテンツ スクリプト」で Google の ajax API を利用しようとしています。通常の HTML ページでは、次のようにします。

<script src="http://www.google.com/jsapi"></script>
<script>
  google.load("language", "1");
</script> 

しかし、翻訳ライブラリを js コードから動的にロードしようとしているので、次のことを試しました。

script = document.createElement("script");  
script.src = "http://www.google.com/jsapi";  
script.type = "text/javascript";  
document.getElementsByTagName("head")[0].appendChild(script); 
google.load('language','1')

しかし、最後の行で次のエラーがスローされます。

Uncaught TypeError: Object #<an Object> has no method 'load'

面白いことに、google.load('language','1')Chrome の js コンソールに同じ " " を入力すると、意図したとおりに動作します...

jqueryでも試しまし.getScript()たが、同じ問題が続きます...

何が問題なのか、どうすれば解決できるのか、誰にも手がかりがありますか?

よろしくお願いします!

4

2 に答える 2

1

コンテンツ スクリプトは、それ自体または他のコンテンツ スクリプトの機能にのみアクセスできます。ドキュメントのスクリプトに Google API ローダーを追加しているため、コンテンツ スクリプトから呼び出すことはできません。:)

API をドキュメントのスクリプトにロードする必要がある場合は、autoloadパラメータを指定して実行できます: " https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22language%22%2C%22version%22%3A%221%22%7D%5D%7D"

http://code.google.com/apis/loader/autoloader-wizard.html

于 2011-12-15T21:50:48.107 に答える
1

私はこれを次のように機能させました:

<script type="text/javascript">
    var headID = document.getElementsByTagName("head")[0];
    var newScript = document.createElement('script');
    newScript.type = 'text/javascript';
    newScript.src = 'http://www.google.com/jsapi';
    headID.appendChild(newScript);
</script>
<script type="text/javascript">
    google.load("language", "1");
</script>

エラーは返されませんでした。

于 2010-05-20T11:56:49.193 に答える