javascript - 跨浏览器 : Different behaviors for disabled input fields (the text can/can't be copied)

标签 javascript html css angular

我有一个禁用的输入 html 字段。在某些浏览器(Chrome、Edge、Internet Explorer 和 Opera)中可以选择和复制文本,但至少在 Firefox 中这是不可能的。

您可以通过在不同的浏览器中执行以下代码来测试它:

<input type="text" disabled value="is disable">
<input type="text" readonly value="is readonly">

我读入了here 禁用的字段可以成为焦点here 禁用的输入元素不可用且不可点击,并且在 here无法修改只读输入字段(但是,用户可以切换到它、突出显示它并从中复制文本)

我没有发现任何关于禁用输入的文本无法复制的内容。

有标准行为,但一些浏览器不遵守它,或者浏览器可以选择是否可以复制来自禁用输入的文本?

是否有一种解决方案允许在所有浏览器中复制禁用的输入字段中的文本?

注意:我的应用程序是使用 Angular/TypeScript 语言实现的。


似乎唯一具有独特行为的浏览器是 firefox。我在 here 中开了一个问题试图了解是设计选项还是错误。我现在正在等待答案。

最佳答案

将您的字段从 disabled 更改为 readonly。这是您想要的行为的正确属性。

不要浪费时间一起破解 javascript 解决方案,因为它会比浏览器行为的微小差异更加不稳定。

如果问题是您希望只读字段看起来像禁用字段,那么使用 readonly 属性集设置输入样式是相当容易的。您不需要改变行为来改变外观。

input[readonly] {
  background: #EEE;
  color: #666;
  border: solid 1px #CCC;
}
<input readonly value="I am readonly">

关于javascript - 跨浏览器 : Different behaviors for disabled input fields (the text can/can't be copied),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55955233/

相关文章:

html - 如何使用 CSS 使 3 个元素相互重叠

javascript - html margin 问题 - "Shaking"网站

javascript - 有没有一种方法可以在不使用SQL的情况下用PHP在页面之间交换数据?

javascript - 如何在Vue.js中导出命名实例,停止使用: var app = this

html - 垂直菜单 "floating over"水平导航栏

javascript - 使用 JavaScript/html;如何在打印区域之外打印 Canvas ?

css - 带有固定导航栏的可折叠侧边栏

javascript - Bootstrap Mobile Menu Dropdown 显示为 Desktop 版本

javascript - 自定义 jQuery 屏幕键盘

javascript - 如何清除 JavaScript 中函数的超时?