当在 contenteditable 按钮中输入空格时,Chrome 会触发 onClick

2023-12-26

我有一个按钮contenteditable=true。我可以很好地编辑文本,但无法在 Chrome 中输入空格。当我按下空格键时,Chrome 会在按钮上触发 onClick 事件。然而,Safari 会按照您的预期插入一个空格。

使用此代码,在编辑按钮时尝试键入空格会触发 Chrome 中的警报。

<button 
    contenteditable="true" 
    onclick="alert('wtf?');">Edit me!</button>

摆弄这段代码:http://jsfiddle.net/Jrt8w/1/ http://jsfiddle.net/Jrt8w/1/

为什么 Chrome 假装这是一个点击事件?我怎样才能说服它插入一个空格?


这是一个比看上去更难的问题。似乎没有任何方法可以关闭空格键“单击”按钮,因此这是一次模拟尝试:

<button 
    contenteditable="true" 
    onclick="if (!event.x && !event.y && !event.clientX && !event.clientY) {event.preventDefault(); insertHtmlAtCursor('&nbsp;');} else {alert('wtf?');}">Edit me!</button>

<script type="text/javascript">
function insertHtmlAtCursor(html) {
    var range, node;
    if (window.getSelection && window.getSelection().getRangeAt) {
        range = window.getSelection().getRangeAt(0);
        node = range.createContextualFragment(html);
        range.insertNode(node);
        window.getSelection().collapseToEnd();
        window.getSelection().modify('move', 'forward', 'character');
    } else if (document.selection && document.selection.createRange) {
        document.selection.createRange().pasteHTML(html);
        document.selection.collapseToEnd();
        document.selection.modify('move', 'forward', 'character');
    }
}
</script>

你可以看到它正在运行here http://jsfiddle.net/5Fyzy/1/.

我复制了我的代码的主要部分这个答案 https://stackoverflow.com/a/2213514/468405。请注意,我只在 Chrome 中进行了测试。不确定它是否能在 IE 中工作,如果不能,我会使用像这样的库Rangy http://code.google.com/p/rangy/,在我上面链接的答案中提到。无论哪种方式,这都应该为您提供一个良好的起点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当在 contenteditable 按钮中输入空格时,Chrome 会触发 onClick 的相关文章

随机推荐

  • 如何从通用方法访问类的属性 - C#

    我有一个具有以下属性的三类 Class A public int CustID get set public string Name get set Class B public int CustID get set public stri
  • 强制分配返回的对象[重复]

    这个问题在这里已经有答案了 在 C 中 有没有办法强制对函数的返回值进行赋值 即如果我有一个成员函数 foo class myClass public T1 foo T2 x T1 y something return y 我可以在 mai
  • Android POSIX 兼容吗?

    Android POSIX 兼容吗 我知道它使用 Linux 内核 但我不确定这是否意味着它兼容 POSIX 因为 POSIX 标准更多地处理用户层函数 那么 兼容吗 例如 如果我在 C 程序中仅使用 ANSI 和 POSIX 函数 它是否
  • 如何在 Objective-C 中取消安排 NSTimer

    我在应用程序中使用嵌套 NSTimer 我这里有两个问题 如何在此函数中重新启动计时器 void updateLeftTime NSTimer theTimer 如何杀死之前的计时器 因为 void updateLevel NSTimer
  • faunadb中如何进行多条件查询?

    我尝试提高对 FaunaDB 的理解 我有一个包含以下记录的集合 ref Ref Collection regions 261442015390073344 ts 1587576285055000 data name italy attri
  • Python:从文件夹中读取多个json文件

    我想知道如何阅读几本json来自单个文件夹的文件 不指定文件名 只是它们是 json 文件 此外 还可以将它们变成pandas数据框 你能给我一个基本的例子吗 一种选择是列出目录中的所有文件操作系统列表目录 https docs pytho
  • .dockerignore 无法包含具有 !**/*.extension 模式的子目录中的文件

    我遇到了问题 dockerignore文件 这是我的项目结构 file sh file js file go file py subdir file2 go file2 py dockerignore Dockerfile 根据 docke
  • c# 将DataGridView保存到Xml文件

    这是我保存文件的按钮 private void metroButton12 Click object sender EventArgs e save DataSet ds DataSet dataGridView1 DataSource S
  • 使用 resharper 从大型类创建接口

    我有一个非常大的类 有很多方法 是否可以使用 Resharper 从该类构建接口 Yes 我的快捷键是 Ctrl Shift R 来调出重构选项 对类名执行此操作允许您 提取接口 或者 您可以从菜单 gt ReSharper gt Refa
  • 在哪里放置对象映射(在 RestKIt 中)

    因为我不想劫持另一个线程 所以我提出了关于映射的问题 首先阅读 RestKit 中放置对象映射的最佳位置是哪里 https stackoverflow com questions 7190721 wheres the best place
  • 如何在启用 Markdown 的 Slack 附件行的开头显示大于号?

    我正在尝试匹配 Slack API 消息的模型 该消息在附件文本行开头的链接中具有大于 gt 字符 该模型还在附件文本中使用斜体和粗体 所以我有text in the mrkdown in大批 不幸的是 这会导致 Slack 解释为 gt
  • 访问 RFC 调用系统的堆栈内存

    当程序在 SAP ECC 中运行时 系统堆栈 存储所有全局变量 无论在该单个会话中调用什么模块 程序 当它调用支持 RFC 的功能模块 FM 时 会在被调用系统中创建一个新的系统堆栈 并且当被调用 FM 完成时 只能在 ECC 中检索被调用
  • InvalidCharacterError 仅在 IE 中出现

    我们有一个订单表单 它使用 ziplookup 功能 当在字段中输入邮政编码时 城市 县 州和邮政编码也会输入到同一字段中 tr td class formLabel Zip Code td td class formColon nbsp
  • SwiftUI 和 NavigationView 的动画错误可能是什么原因造成的?

    我一直在尝试一些 SwiftUI 布局 我想尝试的事情之一是创建一个简单的圆形进度环 在对代码进行了一段时间的研究之后 我设法让一切都按照我希望的方式工作 至少对于原型来说是这样 当我将此视图嵌入到 SwiftUI NavigationVi
  • 将 python 日期格式 (%Y) 转换为 java (yyyy)

    我有很多时间格式 格式如下 Y m d H M S 有没有快速的方法或库将它们转换为 YYYY MM DD HH MM SS 我当前的方法是使用字符串替换 但也许我会错过一些边缘情况 我可能的格式化程序是 d b Y y H M S p f
  • Node.JS deflate/gzip 响应文本

    我看到了所示的示例here http nodejs org api zlib html zlib examples response writeHead 200 content encoding deflate raw pipe zlib
  • 在可能保存模型时处理 ember-data 中的自定义服务器端错误

    保存模型时是否有正确的方法来处理自定义错误 举个例子 假设我有一个只有两个属性 名称 和 值 的模型 当我这样做时 var myModel this get store createRecord myModel name someName
  • IE9 中 的边框半径错误

    看见那个 div 元素正确渲染边框 边框半径 但任何 a or a div
  • 如何使用 JavaScript 获取滚动条位置?

    我正在尝试使用 JavaScript 检测浏览器滚动条的位置 以确定当前视图在页面中的位置 我的猜测是 我必须检测拇指在轨道上的位置 然后检测拇指的高度占轨道总高度的百分比 我是否过于复杂化了 或者 JavaScript 是否提供了比这更简
  • 当在 contenteditable 按钮中输入空格时,Chrome 会触发 onClick

    我有一个按钮contenteditable true 我可以很好地编辑文本 但无法在 Chrome 中输入空格 当我按下空格键时 Chrome 会在按钮上触发 onClick 事件 然而 Safari 会按照您的预期插入一个空格 使用此代码