代码之家  ›  专栏  ›  技术社区  ›  Hoff

如何:将google ajax api动态加载到chrome扩展内容脚本中

  •  4
  • Hoff  · 技术社区  · 16 年前

    我正在尝试在合唱扩展的“内容脚本”中使用谷歌的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() 但同样的问题仍然存在…

    有没有人知道问题可能是什么以及如何解决?

    非常感谢!

    2 回复  |  直到 14 年前
        1
  •  1
  •   Ali Habibzadeh    16 年前

    我有这样的工作:

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

    它没有返回错误。

        2
  •  1
  •   Bhesh Gurung AlexR    14 年前

    内容脚本只能访问自身或其他内容脚本的函数。因为您将google api加载器添加到文档的脚本中,所以不能从内容脚本调用它。:)

    如果需要将API加载到文档的脚本中,可以通过指定 自动装填 参数: “ 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