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

相關問題