【问题标题】:can't select text in textarea in IE无法在 IE 的 textarea 中选择文本
【发布时间】:2012-10-03 12:21:27
【问题描述】:

我有几个案例,我使用文本区域来显示一些用于数据库查询的源代码。这个想法是允许用户选择文本区域中的所有文本,以便他们可以复制该代码并将其粘贴到其他地方。一切都很好,除了 IE-{8,9} 这是我唯一关心的两个 IE 浏览器。

选择适用于一个文本区域,而不适用于另一个。我为此绞尽脑汁好几个小时都没有运气。我试图在一个小代码 sn-p 中重现此问题以说明问题,但这也没有奏效。

因此,要朝另一个方向发展,有没有办法禁止从特定于 IE 且不需要特定 javascript 代码的文本区域中选择文本?我没有编写任何特定代码来禁用文本区域中的文本选择。

例如,如果我有这个文本区域

<textarea>Some Text</textarea>

该文本如何仅在 IE 中无法选择?我还尝试使用 jquery、javascript 和 DOM api 以编程方式选择文本。它适用于除 IE-{8,9} 之外的所有浏览器。

举例。

$('textarea').select();

我考虑过一些事件侦听器不存在的想法,但由于 IE 开发人员工具太棒了,我没有任何运气来跟踪那些比较 Chrome 中列出的内容。

我还重置了 IE 并确保启用了复制“拖放或复制和粘贴”。

我会将其归为浏览器错误并编写自己的错误,但由于它在一种情况下有效,而不是在另一种情况下有效,因此似乎在我没有看到的背景中发生了一些事情。

【问题讨论】:

  • 你可以在IE9中做$('textarea')[0].select(),但在IE7或8中不行

标签: javascript jquery html internet-explorer


【解决方案1】:

你不能像这样引用文本区域。您必须使用 id。

<textarea id="foo">Some Text</textarea>

<script type="text/javascript">
    $('#foo').select();
</script>

【讨论】:

  • 你忘记了 foo 之前的 # :)
【解决方案2】:

按 ID 选择对我来说非常好:

jsfiddle link

【讨论】:

  • 是的,它对我来说工作正常,我只是找不到问题。
【解决方案3】:

事实证明,有一个 mixin 覆盖了 onselectstart 方法。

    if (typeof self.node.onselectstart !== 'undefined') {
        self.node.onselectstart = function() {
            return false;
        };
    }

【讨论】:

  • 一位开发人员覆盖 onselectstart,我在责怪 IE。谢谢你,这拯救了我的一天:)
猜你喜欢
  • 2011-09-07
  • 1970-01-01
  • 2011-01-19
  • 2021-07-01
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 2016-03-16
相关资源
最近更新 更多