2009-10-29 3 views
0

Я извлечение контента, выбранного пользователем с помощью этой функции:Оригинал Markup inInternet Проводник в диапазоне/Выбор

function getSelectionHTML() { 

    var userSelection; 
    if (window.getSelection) 
    { 

    // W3C Ranges 
    userSelection = document.getElementById('axPage').contentWindow.getSelection(); 
    // Get the range: 
    if (userSelection.getRangeAt) 
    var range = userSelection.getRangeAt (0); 
    else 
    { 
    var range = document.createRange(); 
    range.setStart (userSelection.anchorNode, userSelection.anchorOffset); 
    range.setEnd (userSelection.focusNode, userSelection.focusOffset); 
    } 

    var clonedSelection = range.cloneContents(); 
    var div = document.createElement ('div'); 
    div.appendChild (clonedSelection); 
    return div.innerHTML; 

    } 
    else if (document.selection) 
    { 
userSelection = self.frames['axPage'].document.selection.createRange(); 
    return userSelection.htmlText; 
    } 
    else 
    { 

    return ''; 

    } 

    }; 

Extraction работает нормально, но я, кажется, не найти способ, чтобы получить исходную разметку выделенный текст в Internet Explorer. Есть ли способ получить DocumentFragment, как в Firefox? Я знаю о различных способах обработки и подходах обеих систем, но, возможно, кто-то нашел рабочий подход в javascript/ECMA, чтобы избавиться от неприятных ... jQueryXXXXXXXXXXXXX = "12" аддонов в HREF и этих болезненных заглавных тегах и атрибутах.

Опять же: необходимо получить точную разметку.

Любая помощь приветствуется, спасибо.

ответ

0

Благодарим вас за помощь, я, наконец, понял это. Если вам нужно получить выделенный текст в Internet Explorer с тегами в нижнем регистре, попробуйте эту функцию http://codingforums.com/showthread.php?t=148450, и если вы используете jquery и имеете неприятный маленький .jQueryXXXXXXXXXXXX = "12" 13, 14 сразу после каждого href = "" - закрытия "вашего Решение заключается в том, чтобы скопировать разметку в div и прочитать ее innerHTML.

Надеюсь, что это поможет

1

Ваши единственные варианты в IE - писать код, чтобы пройти DOM между граничными точками выбора или использовать htmlText из выбранного TextRange, как вы это делаете. Первый вариант будет довольно привлекательным. Я не совсем понимаю, какова ваша проблема со вторым подходом: не могли бы вы уточнить или привести пример того, что не так с HTML, который вы получаете из htmlText?