Jsfiddle:http://jsfiddle.net/qTEmc/1/
我需要将事件与keypress事件相关联,这些事件是在contenteditable中添加的。
如果您尝试在链接的jfiddle中输入contenteditable区域,您将看到它创建一个链接,您可以在其中键入。我按回车,你去换行。我想要的是在新链接中按回来触发一个功能。为了进步,我只是想让它在此刻回复警报。
有没有人知道这样做的可靠方法?
答案 0 :(得分:1)
您将无法检测链接本身中的关键事件,因为它们不会触发关键事件。相反,您需要调整现有的keypress
处理程序以获取contenteditable元素,以检查选择是否位于链接中。这是一个功能。我也updated your demo。
function selectionInsideLink() {
var node = null, sel;
// Get the selection container node
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount) {
node = sel.getRangeAt(0).commonAncestorContainer;
}
} else if (document.selection) {
sel = document.selection;
if (sel.type != "Control") {
node = sel.createRange().parentElement();
}
}
// Check if the node is or is contained inside a link
while (node) {
if (node.nodeType == 1 && node.tagName.toLowerCase() == "a") {
return true;
}
node = node.parentNode;
}
return false;
}