手动触发窗口对象上的事件

时间:2014-06-27 14:41:25

标签: javascript jquery

我正在添加一个像这样的监听器:

    window.addEventListener('native.showkeyboard', function (e) {
        ...
        ...
    });

我为此编写了一个单元测试,所以我想触发这个事件。我在做:

    window.trigger('native.showkeyboard');

但我最终错误地说道:

    undefined is not a function

如何手动触发此事件?

修改

我也尝试过:

  $(window).trigger('native.showkeyboard');

但是处理程序没有运行,因为它没有在jquery中注册...

2 个答案:

答案 0 :(得分:12)

如果您通过jQuery触发事件,那么事件应该通过jQuery附加 - 请参阅@ fredericHamidi的评论。

$(window).on('native.showkeyboard', function (e) {
    .........
});

$(window).trigger('native.showkeyboard');

WORKING JSFIDDLE DEMO

或者,如果你使用普通香草JS,就这样做:

window.addEventListener('native.showkeyboard', function (e) {
    ........
});

window.dispatchEvent( new Event('native.showkeyboard') );

WORKING JSFIDDLE DEMO

答案 1 :(得分:0)

你没有使用jQuery对象......这将是你的问题。

 window.trigger('native.showkeyboard');  //<-- window is not a jQuery object

你需要把它包起来

 $(window).trigger('native.showkeyboard');