contenteditable没有检测图像

问题描述 投票:1回答:1

请帮我..

我有令人满意的问题,特别是在图像检测方面

我用这个代码:

function getnode() {
  var node, selection;
  if (window.getSelection) {
    selection = getSelection();
    node = selection.anchorNode;
  }
  if (!node && document.selection) {
    selection = document.selection;
    var range = selection.getRangeAt ?
      selection.getRangeAt(0) :
      selection.createRange();
    node = range.commonAncestorContainer ?
      range.commonAncestorContainer :
      range.parentElement ? range
      .parentElement() : range.item(0);
  }
  if (node) {
    return (node.nodeName == "#text" ? node.parentNode : node);
  }
}

jquery:

$(function() {
  $("#editor").bind('click', function(e) {
    var $node = $(getnode());

    if ($node.is('a')) {
      alert("Yes I am link");
    }

    if ($node.is('b')) {
      alert("Yes I am bold");
    }

    if ($node.is('img')) {
      alert("IMAGE READY");
    } else {
      $("#editor").focus();
    }
  });
});

FIDDLE DEMO:请帮助我,找到方法

先感谢您

javascript jquery wysiwyg contenteditable
1个回答
1
投票

我认为解决问题的最简单方法是不使用自己的getnode函数,但允许元素通过target属性来自click事件处理程序。

将代码更改为此功能至少可以完美地用于我尝试过的场景

$("#editor").bind('click', function (e) {
    var $node =  $( e.target );
    if ($node.is('a')) {
        alert("Yes I am link");
    }
    if ($node.is('b')) {
        alert("Yes I am bold");
    }
    if ($node.is('img')) {alert("IMAGE READY");
    } else {
        $("#editor").focus();
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.