3

我正在尝试使用 ClojureScript 在 Chrome 中创建用户脚本。我遇到的问题是该<name>.user.js文件需要在顶部声明有关 UserScript 的属性的注释块。

它看起来像这样:

// ==UserScript==
// @name CLJS Hello World
// @namespace http://something.com/my_cljs_user_script
// @author spoon16
// @include *
// ==/UserScript==

如何在编译的 JS 文件中包含这个块?

4

2 回答 2

1

(这里正在进行讨论)

  1. 在您的 cljsbuild 构建规范中添加一个 foreign-libs 标记(如果您使用的是 cljsbuild),这是我添加的内容:

    :foreign-libs [{:file "comment-block.js" :provides ["comment.block"]}]
    
  2. 添加那个外国“lib”。这是我的内容:

    /**
     * @fileoverview
     * This file contains nothing but a comment block which is to be preserved 
     * by the google closure compiler. This comment block contains a comment
     * block which is necessary to be in the output of the compiled javascript
     * even in advanced compilation mode.
     */
    /**
     * @preserve
    // ==UserScript==
    // @description Description of the user script
    // @include INCLUDESPEC HERE
    // @include ETC ETC
    // @name user script name
    // ==/UserScript==
    */
    
  3. (要求)你的外国图书馆。

    (require [comment.block :as ignored])
    
  4. 运行您的(高级)编译。在编译输出的某个地方,会出现 UserScript 块(请注意,用户脚本块需要位于第 0 列,以 // 样式注释开头,这就是为什么在 之后有换行符的原因@preserve)。

  5. 调用编译后的输出类似的东西blablabla.user.js(后缀'user.js'是必需的),greasemonkey 会识别它,从用户脚本块中获取数据,每个人都有独角兽(甚至是素食主义者!)

于 2013-04-20T16:18:43.147 回答
0

我认为最好的办法是使用两个单独的文件——一个是保留为 javascript 文件的 UserScript 模板,另一个是编译的实际 ClojureScript。只需包含执行所需 ClojureScript 的函数。

于 2012-04-17T00:40:32.863 回答