当我的应用程序通过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'”。
这是一个错误还是我需要在代码中更改某些内容?
答案 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
版本。