2

我使用Windows 8时,Internet Explorer 10时,Visual Studio 2013为什么在IE9 +上webbrowser不支持document.createEvent,以及如何解决它?

下面是javascript代码:

function simulate(element, eventName) 
{ 
    var options = extend(defaultOptions, arguments[2] || {}); 
    var oEvent, eventType = null; 

    for (var name in eventMatchers) 
    { 
     if (eventMatchers[name].test(eventName)) { eventType = name; break; } 
    } 

    if (!eventType) 
     throw new SyntaxError('Only HTMLEvents and MouseEvents interfaces are supported'); 

    if (true || document.createEvent) // temporary it's always true to check IE 
    { 
     oEvent = document.createEvent(eventType); 
     if (eventType == 'HTMLEvents') 
     { 
      oEvent.initEvent(eventName, options.bubbles, options.cancelable); 
     } 
     else 
     { 
      oEvent.initMouseEvent(eventName, options.bubbles, options.cancelable, document.defaultView, 
      options.button, options.pointerX, options.pointerY, options.pointerX, options.pointerY, 
      options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, options.button, element); 
     } 
     element.dispatchEvent(oEvent); 
    } 
    else 
    { 
     options.clientX = options.pointerX; 
     options.clientY = options.pointerY; 
     var evt = document.createEventObject(); 
     oEvent = extend(evt, options); 
     element.fireEvent('on' + eventName, oEvent); 
    } 
    return element; 
} 

function extend(destination, source) { 
    for (var property in source) 
     destination[property] = source[property]; 
    return destination; 
} 

var eventMatchers = { 
    'HTMLEvents': /^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/, 
    'MouseEvents': /^(?:click|dblclick|mouse(?:down|up|over|move|out))$/ 
} 
var defaultOptions = { 
    pointerX: 0, 
    pointerY: 0, 
    button: 0, 
    ctrlKey: false, 
    altKey: false, 
    shiftKey: false, 
    metaKey: false, 
    bubbles: true, 
    cancelable: true 
}; 

我的HTML:

<a href="http://google.com" id="rrx" > google </a> 

这里是我的调用javascript代码模拟:

simulate(document.getElementById('rrx'), "click"); 

问题是我不是红色的被定向到谷歌网页,因为IE抛出一​​个异常,消息不支持document.createEvent。 据我所知document.createEvent应该支持IE9 +。

+0

您可以使用jQuery更轻松地完成此操作。你一定要使用纯粹的JavaScript? – Skriptotajs

+0

'document.createEvent'适用于我的IE9。你有没有检查你的网页或服务器是不是强制IE8或7的浏览器兼容模式? – towr

+0

@Skriptotajs我尝试过没有成功。请检查我的其他问题http://stackoverflow.com/questions/21887238/why-jquery-trigger-or-triggerhandler-doesnt-work –

回答

2

添加提醒以显示document.documentModedocument.compatMode,你会看到什么?

我相信你应该在注册表中拥有正确的FEATURE_BROWSER_EMULATION值,而在HTML本身中应该拥有<!DOCTYPE html>,以便所有现代HTML DOM/JavaScript功能都能正常工作。

这也适用于您的related question

相关问题