javascript - 如何解决 CKEditor 在 IE 11 中的 javascript 错误

标签 javascript asp.net

我的 asp.net 网站使用 CKEditor 3.5.3。虽然它在所有其他浏览器上运行良好,但在 IE 11 中会出现以下错误:

JavaScript runtime error: NotSupportedError

N=F.$.createEvent('KeyEvents')

看来,对于 IE 11,我们必须使用 CKEditor 版本 4.3.4。我想知道是否仅针对 javascript 错误有任何修复,因为我现在不想升级。

除了涉及的时间之外,我对升级的主要反对是,最新版本没有旧版本具有的供 asp.net 应用程序使用的 dll。

最佳答案

我有同样的问题,我不想升级整个 CKE 控件,所以我设法通过调整压缩的 ckeditor.js 中的代码来检查 IE 11 或更高版本来解决这个问题。

差不多,createEvent('KeyEvents') 对 IE11 不再有效,需要更改为 createEvent('Events')

调用 createEvent 之后,将有一个 initKeyEvent('keypress', ....) 方法调用,也需要调整为调用 initEvent('keypress', ....) 适用于 IE11+。

加入必要的检测IE11的条件语句后(下例使用dojo),调整后的CKE JS如下:

O=G.$.createEvent(dojo.render.html.ie >= 11 ? 'Events' : 'KeyEvents');
if(dojo.render.html.ie >= 11)
    O.initEvent('keypress',true,true,F.$,false,false,false,false,0,32);
else
    O.initKeyEvent('keypress',true,true,F.$,false,false,false,false,0,32);

上面的JS代码可能和你的不一样,但是这个例子仍然适用于IE11的合成事件的无效使用。

关于javascript - 如何解决 CKEditor 在 IE 11 中的 javascript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23142816/

相关文章:

javascript - 在 Protractor 中从命令行传递基本 url

asp.net - 如何从HttpClient.PostAsJsonAsync()生成的Content-Type header 中删除charset = utf8?

javascript - 如何使用js在两个aspx页面之间进行通信?

css - ASP :TextBox convert into bootstrap <input>

javascript - 写闭包之前没有任何东西

javascript - 如何在代码之外停止 Javascript 中的 setInterval 循环而不刷新浏览器?

javascript - 等待弹出窗口javascript

javascript - 如何为 Button.click Javascript 调用添加延迟

c# - ASP.NET MVC 和 MemoryCache - 我如何使用它?

c# - 清除浏览器历史记录后网站无法正常工作