Как получить HTML для элемента DOM в JavaScript

В случае управляемых потоков сложность выполнения этого является градусом, больше, чем тот из собственных потоков. Это вызвано тем, что потоки CLR непосредственно не связываются с собственным потоком ОС. Другими словами, CLR может переключиться , справился поток от собственного потока до собственного потока, как это считает целесообразным. Функция Поток. BeginThreadAffinity обеспечивается для размещения управляемого потока в жестко регламентированный с собственным потоком ОС. В той точке Вы могли экспериментировать с использованием встроенного API для предоставления базовой собственной привязки процессора потока. Как все предполагают здесь, это не очень хорошая идея. На самом деле существует документация предложение, что потоки могут получить меньше времени обработки, если они ограничиваются единственным процессором или ядром.

можно также исследовать Система. Диагностика. Процесс класс. Там можно найти, что функция перечисляет потоки процесса как набор объекты ProcessThread. Этот класс имеет методы, чтобы установить ProcessorAffinity или даже установить , предпочел процессор - не уверенный, каково это.

Правовая оговорка: я испытал подобную проблему, где я думал, что ЦП был под используемым и исследовал много этого материала; однако, на основе всего, что я считал, казалось, что это, не была очень хорошая идея, как свидетельствуется комментариями, добавленными здесь также. Однако это все еще интересно и полезный опыт для экспериментирования.

88
задан Deduplicator 1 February 2015 в 16:26
поделиться

7 ответов

Расширяя ответ jldupont, вы можете создать элемент упаковки на лету:

var target = document.getElementById('myElement');
var wrap = document.createElement('div');
wrap.appendChild(target.cloneNode(true));
alert(wrap.innerHTML);

Я клонирую элемент, чтобы избежать необходимости удалять и повторно вставлять элемент в фактический документ. Однако это может быть дорогостоящим, если под элементом, который вы хотите напечатать, будет очень большое дерево.

81
ответ дан 24 November 2019 в 07:31
поделиться

Сначала поместите элемент, который оборачивает рассматриваемый div , поместите атрибут id в элемент, а затем используйте getElementById на нем: как только у вас есть файл, просто выполните 'e.innerHTML`, чтобы получить HTML.

Это выделено жирным шрифтом

=>

Выделено жирным шрифтом

, а затем:

var e=document.getElementById("wrap");
var content=e.innerHTML;

Примечание , что externalHTML не поддерживает кроссбраузерность.

8
ответ дан 24 November 2019 в 07:31
поделиться

Используйте externalHTML :

var el = document.getElementById( 'foo' );
alert( el.outerHTML );
82
ответ дан 24 November 2019 в 07:31
поделиться

Если вам нужен более легкий размер, но более длинный сценарий, получите элементы innerHTML и создайте и клонируйте только пустой родительский элемент-

function getHTML(who,lines){
    if(!who || !who.tagName) return '';

    var txt, ax, str, el= document.createElement('div');
    el.appendChild(who.cloneNode(false));
    txt= el.innerHTML;
    ax= txt.indexOf('>')+1;
    str= txt.substring(0, ax)+who.innerHTML+ txt.substring(ax);

    el= null;
    return lines? str.replace(/> *</g,'>\n<'): str;
    //easier to read if elements are separated
}
3
ответ дан 24 November 2019 в 07:31
поделиться
var el = document.getElementById('foo');
el.parentNode.innerHTML;
-2
ответ дан 24 November 2019 в 07:31
поделиться

, поскольку externalHTML - это только IE, используйте эту функцию:

function getOuterHtml(node) {
    var parent = node.parentNode;
    var element = document.createElement(parent.tagName);
    element.appendChild(node);
    var html = element.innerHTML;
    parent.appendChild(node);
    return html;
}

создает фиктивный пустой элемент родительского типа и использует на нем innerHTML, а затем повторно присоединяет элемент обратно к обычному dom

1
ответ дан 24 November 2019 в 07:31
поделиться

Вам понадобится что-то подобное, чтобы он был кроссбраузерным .

function OuterHTML(element) {
    var container = document.createElement("div");
    container.appendChild(element.cloneNode(true));

    return container.innerHTML;
}
2
ответ дан 24 November 2019 в 07:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: