zoukankan      html  css  js  c++  java
  • tinyMCEPopup.close轻松让IE 9 RC崩溃

    昨天,微软发布了IE 9 RC。我们立即下载安装,测试它浏览博客园的兼容性。在测试中,我们发现使用代码着色功能时,会引起IE 9 RC崩溃。而这个问题在其他浏览器(包含其他版本的IE浏览器)中不存在。

    本文主要是分享一下崩溃发生的场景及解决方法。

    首先看一下引起崩溃的js代码:

    $.ajax({
    url:
    '/ws/UtilService.asmx/CodeHighlight',
    data:
    '{"codeHighlighter":' + $.toJSON(codeHighlighter) + '}',
    type:
    'post',
    dataType:
    'json',
    contentType:
    'application/json; charset=utf-8',
    cache:
    false,
    success:
    function (data) {
    tinyMCEPopup.editor.execCommand(
    'mceInsertContent', false, data.d);
    tinyMCEPopup.close();
    }
    });

    这是一个很简单的ajax调用代码,客户端将代码文本发送至服务端,服务端将着色后的代码返回给客户端。tinyMCEPopup.editor.execCommand将代码插入到TinyMCE编辑器中,然后通过tinyMCEPopup.close()关闭当前窗口(该方法的代码在tiny_mce_popup.js中)。崩溃就发生在执行tinyMCEPopup.close()的时候。

    接着参观一下崩溃场景:

    在插入代码窗口,点击提交之后,IE 9 RC立即出现崩溃窗口,见下图:

    点击Debug启动VS2010进行调试,可以看到调试信息:

    由于知识所限,不能根据调试信息作出进一步分析,这里只是展现一下崩溃现场。

    最后,就是解决方法:

    将tinyMCEPopup.close放在计时器中执行,代码如下:

    $.ajax({
    url:
    '/ws/UtilService.asmx/CodeHighlight',
    data:
    '{"codeHighlighter":' + $.toJSON(codeHighlighter) + '}',
    type:
    'post',
    dataType:
    'json',
    contentType:
    'application/json; charset=utf-8',
    cache:
    false,
    success:
    function (data) {
    tinyMCEPopup.editor.execCommand(
    'mceInsertContent', false, data.d);
    setTimeout(close,
    100);
    }
    });

    function close() {
    tinyMCEPopup.close();
    }

    这个解决方法是我们摸索出来的,问题的真正原因目前还不清楚。

    如果想体验一下IE 9 RC崩溃,请用IE9 RC访问:http://www.cnblogs.com/ie9rc_test.htm

  • 相关阅读:
    什么是Spring的IOC和DI
    2021年ACP考试复习笔记-云服务器ECS知识点及练习
    个人站点搭建完成啦,欢迎前来参观~
    准备一台标准服务器(模版机)!
    正则表达式几个常用的特殊字符!
    Shell的几个重点工具
    Shell入门,关于语法的一些简单玩意儿
    Mysql for Linux的安装以及远程访问
    在学到MySQL索引时,涉及到了B树和B+树.聊一聊
    Linux的一些问题的处理(重要目录,/配置静态IP/主机名/hosts映射)
  • 原文地址:https://www.cnblogs.com/dudu/p/ie9_rc_crash.html
Copyright © 2011-2022 走看看