JavaScript designMode

Discussion in 'PHP' started by FindeR, 1 Aug 2011.

  1. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    Доброго времени суток.

    Работая в iframe с включенным designMode, можно заметить такую вещь: если в тексте есть картинка \ таблица и нажать, к примеру, "выделить всё", картинка \ таблица выделится как текст. А если же ткнуть на картинку \ таблицу - появляется возможность её ресайзить и т.д.
    В первом случае выделенную часть можно получить obj.selection.createRange() или obj.defaultView.getSelection()

    А как получить выделенную картинку, если на неё просто тыкнули в designMode ? Чтобы дальше уже оперировать её свойствами?
    Весь мозг сломал уже, а ответ, наверняка, на поверхности...


    upd: вопрос сужается до рамок IE.
    obj.selection.createRange() взять получается, но что дальше с ним делать - хз. Ни свойств, ни методов я у него не нашёл (помимо .length = 1).
    Как в IE получить картинку активную? Выделенную не как текст.
     
    #1 FindeR, 1 Aug 2011
    Last edited: 2 Aug 2011
  2. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    Как всегда, ответ оказался довольно прост.
    Если кто-то будет гуглить:
    Под IE
    Code:
    var object_node = (obj.range.length > 0) ? this.range.item(0) : obj.range.parentElement();
    В итоге в object_node имеем ссылку на объект, на который кликнули

    Для нормальных браузеров:
    Code:
    var object_node = obj.range.getRangeAt(0).startContainer;	
    var pos = obj.range.getRangeAt(0).startOffset;
    if(object_node.nodeType != 3) { object_node = node.childNodes[pos]; }
    
     
    #2 FindeR, 2 Aug 2011
    Last edited: 2 Aug 2011
    2 people like this.