Вызов моих собственных функций JavaScript - PullRequest
1 голос
/ 20 сентября 2011

Эта проблема проявляется только тогда, когда мое приложение работает через KBX.Запуск его в букмарклет работает нормально.Раньше я мог это делать, но это больше не работает.

Вот что у меня есть.В теге <p> есть атрибут onclick, который вызывает функцию 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 ]

1 голос
/ 21 сентября 2011

Ответ Майка является самым общим, но я публикую свое конкретное решение здесь для дальнейшего использования.

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
});

Таким образом, мы прикрепляем обработчик события click напрямую с помощью jQuery, а не полагаемся на атрибут onclick, который может видеть функцию с именем.

Примечание. На сайте, над которым я работаю, уже есть jQuery, поэтому я использую их версию, а не версию $K, которая поставляется вместе с Kynetx.

1 голос
/ 20 сентября 2011

Похоже, вы столкнулись с проблемой песочницы. Javascript, работающий в UBX, запускается в изолированной программной среде отдельно от страницы.

У меня есть запись в блоге, которая может или не может быть устаревшей http://geek.michaelgrace.org/2011/03/kynetxs-new-sandboxed-browser-extensions/

Вы также должны попытаться использовать 'use resource', чтобы получить файл javascript. Я считаю, что это втягивается в страницу, а не в песочницу.

Также см. Приложение Kynetx не работает при установке через расширение KBX в Chrome

...