在chrome扩展内容脚本中使用谷歌闭包库

时间:2013-08-29 06:52:08

标签: google-chrome-extension google-closure-library

我正在尝试在Chrome扩展程序的内容脚本中使用谷歌闭包库。

这就是 manifest.json

中content_scripts的样子
 "content_scripts": [
    {
        "matches": ["<all_urls>"],
        "js": [
                "closure-library/closure/goog/base.js",
                "content.js"
              ]
    }

我收到以下错误:

goog.require could not find: goog.dom 

我认为一个选项是使用closure-builder来编译带有闭包代码的content.js并使用单个输出文件,但是我需要在每次更改content.js后执行此操作。

在内容脚本中是否有其他方法可以使用闭包库?

修改
即使我使用闭包构建器方法,它也无法正常工作。它试图在当前网页所在的域名中查找deps.js。例如。如果是google.com,我会收到如下错误消息:

GET https://www.google.co.in/deps.js 404 (Not Found)
goog.writeScriptTag_
goog.importScript_ 
(anonymous function)

1 个答案:

答案 0 :(得分:1)

为了在chrome扩展中使用闭包库,我们创建了一个空的source.js,它只包含了我们需要的闭包库中的所有模块。

示例source.js(source.js进入myproject目录。)

goog.provide('myproject.start')
goog.require('goog.dom');
goog.require('goog.dom.query');
goog.require('goog.net.XhrIo');

然后我们在这个文件和闭包库源上使用了closure-builder来生成一个输出文件,其中包含了我们需要的所有闭包库模块的所有相关源。

相关命令:

closure-library/closure/bin/build/closurebuilder.py \
  --root=closure-library/ \
  --root=myproject/ \
  --namespace="myproject.start"
  --output_mode=compiled
  --compilation_level=SIMPLE_OPTIMIZATIONS

注意,你不能使用ADVANCED_OPTIMIZATIONS否则所有未使用的功能都将被剥离,这不是我们想要的。

在manifest.json

中包含此内容
"js": [
                "compiled.js",
                "content.js"
              ]

因此,我们只需要在封闭库代码中包含一些新模块时才需要生成compiled.js,这很少见,而不是每次我们更改content.js。