zoukankan      html  css  js  c++  java
  • IE9 bug: 在textarea中复制内容会丢失换行符

    这是我们在实际开发中实实在在遇到的问题,没有任何悬念。这个问题就是:

    在IE9中,在HTML多行文本框textarea中输入带有换行的内容,比如在这篇随笔下面的评论框中输入,然后选中文本框中的内容Ctrl+C/Ctrl+V粘贴到记事本中,所有换行符会丢失,变成一行。

    经过测试,在IE6, IE8, Chrome, Firefox中都不存在这个问题。

    stackoverflow上也提到了这个问题 - IE9 and TEXTAREA newlines,并提供了你轻意不会采用的解决方法,就是让IE9倒退至IE7,在<head>中添加如下代码:

    <!-- Mimic Internet Explorer 7 -->
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" >

    一个很小的问题,却给我们实现一个功能带来了大麻烦!

    园子里找了找,huajs还发现了IE9的另外一个bug(详见发现了IE9里的一个bug),也是针对textarea的,这里也拿出来示众一下。

    简而言之,就是IE9会解析textarea中的html代码,测试代码如下(代码来源):

    <!DOCTYPE HTML>
    <html>
    <head>
        <title></title>
    </head>
    <body>
    <textarea id="t" rows="6"></textarea>
    <script>
    var t = document.getElementById("t");
    t.innerHTML = "<p style='color:red'>aaaa</p>";  // 只能在IE9中被解析,其他浏览器不解析
    /*下边是我自己测试的结论:
     textarea表示文本区域,本应该把它里边的各种文字、标签等显示成纯文本的形式。
        直接把诸如
        <p style='color:red'>aa</p>的html形式标签放到textarea里,在IE9及其他浏览器里都会把P标签显示出来,
        这个应该是正确的解析,没什么问题。
        但是,把
        <p style='color:red'>aa</p>
        通过JS的innerHTML向textarea里插入,就能(只能)被IE9解析成红色的aa,把p标签当成html标签解析,
        p被过滤掉了(注意,<!DOCTYPE>的文档声明必须要加上,不加的话,IE9就不会解析p标签了)。
        当然,textarea里一般不应该用innerHTML方法插入内容。
        
    */
    </script>
    </body>
    </html>
  • 相关阅读:
    python Flask JQuery使用说明
    sqlserve 数据类型具体解释
    赵雅智_ListView_SimpleAdapter
    HDU 1018 Big Number (log函数求数的位数)
    cocos2d函数
    BZOJ 3514 Codechef MARCH14 GERALD07加强版 Link-Cut-Tree+划分树
    QQ好友列表数据模型封装
    【Codeforces】512C Fox and Dinner
    spring中操作mysql数据库
    【读书笔记】iOS-Xcode-模拟器操作的一些快捷键
  • 原文地址:https://www.cnblogs.com/dudu/p/ie9_bug_textarea.html
Copyright © 2011-2022 走看看