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

我有这样的工作:

<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 回答
1

内容脚本只能访问其自身或其他内容脚本的功能。由于您将 google api 加载程序添加到文档的脚本中,因此您无法从内容脚本中调用它。:)

如果您需要将 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

于 2011-12-15T21:50:48.107 回答