目前我正在开发一个基于jquery的非常小的wysiwyg编辑器。我不关心IE或Chrome,只关心Firefox。我的问题是查找所选内容是否在的链接中,以获取href属性if的值。单击即可找到链接的节点,双击始终可以找到正文。它处于designMode。
我的click和dblclick事件处理程序。vars 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,例如"body",当我点击未匹配的文本时。当我用execCommand("createLink",…)添加链接时,日志显示"a"。这很管用。当我用从开始到结束的2次点击标记链接单词时,日志显示"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
}