调用我自己的JavaScript函数

时间:2011-09-20 17:41:26

标签: krl

当我的应用程序通过KBX运行时,此问题才会显现。在书签中运行它可以正常工作。我曾经能够做到这一点,但它不再起作用了。

这就是我所拥有的。 onclick标记上有一个<p>属性,用于调用JavaScript函数:

<p conclick="window.a163x134_log(this); return false;"></p>

这是我的功能:

emit <|
    window.a163x134_log = function(obj) {
        // Do something
    };
|>;

我尝试使用常规函数名称(未附加到window)并将其命名为KOBJ。这些都不奏效。我得到的错误消息是“Uncaught TypeError:Object [object DOMWindow]没有方法'a163x134_log'”。

这是一个错误还是我需要在代码中更改某些内容?

2 个答案:

答案 0 :(得分:1)

听起来你遇到了沙箱问题。在UBX中运行的Javascript在与页面分开的沙箱中运行。

我的博文可能会或可能不会过时http://geek.michaelgrace.org/2011/03/kynetxs-new-sandboxed-browser-extensions/

您还应该尝试使用“使用资源”来提取javascript文件。我相信它会被拉入页面,而不是沙箱。

另见Kynetx app not working when installed via KBX extension on Chrome

答案 1 :(得分:1)

迈克的答案是最普遍的,但我在这里发布我的具体解决方案以供将来参考。

use resource由于某种原因无效。因此,我会在<script>中动态添加emit标记,如下所示:

emit <|
    var trigger_click_script = document.createElement("script");
    trigger_click_script.src = "<url to my JavaScript file>";
    document.getElementsByTagName("head")[0].appendChild(trigger_click_script);
|>;

然后外部JavaScript文件如下所示:

$("p.ttt-time").click(function(e) {
    e.preventDefault();
    // Do something
});

这样,我们直接使用jQuery附加click事件处理程序,而不是依赖于onclick属性能够看到具有名称的函数。

注意:我正在处理的网站已经有了jQuery,所以我使用的是他们的版本,而不是Kynetx运行时附带的$K版本。