Как: динамически загружать Google AJAX API в скрипт содержимого расширения Chrome - PullRequest
4 голосов
/ 20 мая 2010

Я пытаюсь использовать ajax apis от Google в «содержательном скрипте» расширения chorme. На обычной 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')" в консоли js chrome, оно работает как положено ...

Я также пытался с jquery .getScript(), но та же проблема сохраняется ...

Кто-нибудь знает, в чем может быть проблема и как ее можно решить?

Большое спасибо заранее!

Ответы [ 2 ]

1 голос
/ 16 декабря 2011

Сценарии содержимого могут иметь доступ только к функциям самого себя или другим сценариям содержимого. Поскольку вы добавляете google api loader в скрипты документа, вы не можете вызвать его из скрипта контента. :)

Если вам нужно загрузить apis в скрипты документа, вы можете сделать это, указав параметр 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

1 голос
/ 20 мая 2010

У меня это работает так:

<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>

Не вернуло ошибок.

...