javascript - Click 和 dblclick 在同一 html 上传递不同的父节点。为什么?

标签 javascript click selection designmode

目前我正在开发一个基于 jquery 的非常小的所见即所得编辑器。我不关心 IE 或 Chrome,只关心 Firefox。我的问题是查找选择是否在链接中,以获取 href 属性的值(如果已设置)。单击可找到链接的节点,双击始终可找到正文。 它处于设计模式。

我的 click 和 dblclick 事件处理程序。 变量current_selection、current_node、iframe 和container 是全局变量。

selection_handler:function()
{
  current_selection = iframe.getSelection();
  current_node = current_selection.anchorNode;
  if(current_node.nodeName == "#text")
  {
    current_node = current_node.parentNode;
  }
  $('#log').text(current_node.nodeName);
},

当我单击未格式化的文本时,日志显示 mit 例如“正文”。当我使用 execCommand('createLink',...) 添加链接时,日志显示“A”。这样可行。当我从头到尾单击两次标记链接的单词时,日志显示“A”。但双击我总是得到“正文”。所以我无法获取href属性。

处理程序在 init 中定义:

init:function(options)
{
  ...

  iframe = $('#wysiwyg-'+container.attr('id'))[0].contentWindow;
  iframe.addEventListener('dblclick',methods.selection_handler,false);
  iframe.addEventListener('click',methods.selection_handler,false);

  ...
}

有人知道出了什么问题吗?

最佳答案

当您双击链接时,通常会选择完整的链接,选择会发生变化。

使用事件对象来确定哪个元素被单击:

selection_handler:function(e)
{
  current_selection = window.getSelection();
  current_node = e.target;
  //...more code
}

关于javascript - Click 和 dblclick 在同一 html 上传递不同的父节点。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12340431/

相关文章:

javascript - 网络工作人员代表团(子工作人员)不工作

qt - 在 Windows 中模拟鼠标按钮单击

javascript - 右键单击文本字段是否应该像左键单击一样移动插入符?

javascript - JavaScript for 循环中变量的动态命名

javascript - 需要帮助加载带有用户输入的对象数组

jquery - 动态添加的按钮(使用 jQuery)必须单击两次才能触发已绑定(bind)到按钮的单击事件

jquery - 使用 jQuery 切换文本

c - C 中的滚动菜单

java - JTable 中的单元格 setBorder 更改附近单元格背景

javascript - Angular - 动态操纵过滤条件