3

我正在编写一个应用程序来尝试使用 JavaScript 修改页面,但我无法确定将要运行的 JavaScript 放在哪里。我正在使用 $K 的 KRL 特定 jQuery 句柄。

  • 我可以在我的 KRL 规则集/应用程序中使用 JavaScript 的所有地方在哪里?
  • 你有一个例子来演示在这些领域中使用 JavaScript 吗?
4

1 回答 1

3

有两种方法可以将 javascript 直接放到 KRL 规则集中的网页上。通过发射块或外部资源。让我们首先讨论发射块。

发射可以出现在规则的操作块中,也可以出现在规则集的全局块中。您可以将 emit 与heredocclownhats 一起使用,但首选 clownhats。

这是在规则中发出 javascript 的示例:

rule emitter {
    select when web pageview "exampley.com"
    {
        emit <| 
            $K("body").append("Hello from a rule.");
        |>;
    }
}

这是在全局块中发出 javascript 的示例:

global {
    emit <|
        $K("body").append("Hello from the global block.");
    |>;
}

在 KRL 中将 javascript 放置在页面上的第二种方法是使用外部资源

我将向您推荐链接的文档以获取详细信息,但是您在规则集的元块中包含一个外部 javascript 资源,如下所示:

use javascript resource "url-to-resource"

假设我有以下是位于的 javascript 文件的内容my-personal-website.com/awesome.js

$K("body").append("Hello from an external resource.");

要在规则集中使用它:

meta {
   // normal meta stuff...
   use javascript resource "my-personal-website.com/awesome.js"
}

这是一个完整的规则集,显示了在 KRL 规则集中的页面上放置 javascript 的 2 种不同方法:

ruleset a369x151 {
    meta {
        name "fun-with-javascript"
        description <<
            fun-with-javascript
        >>
        author "AKO"
        logging on

        use javascript resource "http://dl.dropbox.com/u/4917848/js/example-external-resource.js"
    }

    global {
        emit <|
            $K("body").append("<br/>Hello from the global block.");
        |>;
    }

    rule emitter {
        select when web pageview "exampley.com"
        {
            emit <| 
                $K("body").append("<br/>Hello from a rule.");
            |>;
        }
    }
}

在exampley.com上运行应用程序后的动作: exampley.com 摇滚!

您可以通过在此处获取应用程序书签来自己尝试。

于 2011-02-03T07:14:59.750 回答