如何测试事件的浏览器支持

时间:2012-11-20 17:11:05

标签: javascript events browser-feature-detection

具体来说,测试input[type=date]是否会触发input事件?

2 个答案:

答案 0 :(得分:3)

jsFiddle Example

你可以这样做:

 var element = document.getElementById('myElement');
 var supported = 'oninput' in element;

答案 1 :(得分:3)

通过查看this网站,我建议您尝试

  

测试B:在输入上使用setAttribute来设置oninput并检查   看看node.oninput是否是一个函数   测试C:使用w3事件api创建输入并伪造按键   查看oninput是否触发

以下是Test C的JavaScript

function testC(){
    var input = document.createElement('input'),
        e = document.createEvent("KeyboardEvent");
    // set type for DATE
    input.setAttribute('type', 'date');
    e.initKeyEvent("keypress", true, true, window, false, false, false, false, 0, "e".charCodeAt(0));
    // use initKeyboardEvent for webkit
    document.body.appendChild(input);
    input.addEventListener("input", function(e) { alert('C Successful'); e.preventDefault(); e.stopPropagation(); }, false);
    input.focus();
    input.dispatchEvent(e);
    document.body.removeChild(input);
}

编辑:测试代码从the test page复制,只有几个小的更改(var的位置,类型=日期,警报)。我刚刚在Chrome中运行它(在将initKeyEvent更改为initKeyboardEvent之后)并且它不会产生任何结果,但是注释掉removeChild行并手动执行 < / em>结果成功消息。不知道为什么模拟事件没有调用它,因此在将代码应用到代码中之前需要先查看它。