Javascript: у меня есть представление DOM узла (элемента или документа), и я ищу его строковое представление. Например,
var el = document.createElement("p");
el.appendChild(document.createTextNode("Test"));
должен дать:
get_string(el) == "<p>Test</p>";
У меня есть сильное чувство, что мне не хватает чего-то банально простого, но я просто не нашел метода, который работал бы в IE, FF, Safari и Opera. Следовательно, externalHTML - не вариант.
javascript
string
dom
cross-browser
element
Болдевин
источник
источник
Ответы:
Вы можете создать временный родительский узел и получить его внутреннее HTML-содержимое:
РЕДАКТИРОВАТЬ: см. Ответ ниже о externalHTML. el.outerHTML должен быть всем, что нужно.
источник
document.documentElement
в div?element
прежде чем добавлять его,tmp
потому что при добавленииtmp
он будет удален изdocument
.То, что вы ищете, это 'externalHTML', но нам нужен запасной вариант, потому что он несовместим со старыми браузерами.
Здесь вы найдете мой плагин jQuery: Получить внешний HTML-код выбранного элемента
источник
outerHTML
в версии 11 после того, как я задал вопрос. Так что тогда это был не вариант. Я даже свой вопрос обновил соответствующим комментарием, если присмотреться.innerHtml
innerHTML
; )outerHTML
атрибут. См. Также caniuse.com/#feat=xml-serializerНе думаю, что для этого нужен сложный сценарий. Просто используйте
источник
В FF вы можете использовать
XMLSerializer
объект для сериализации XML в строку. IE дает вамxml
свойство узла. Итак, вы можете сделать следующее:источник
.xml
не работает с узлами DOM (как с узлами на текущей странице). Он работает только с узлами документов XML DOM.outerHTML
не работает с узлами документа XML DOM. Он работает только с узлами DOM (как с узлами на текущей странице). Я бы сказал, хорошая последовательность.Используйте Element # outerHTML:
Его также можно использовать для написания элементов DOM. Из документации Mozilla:
https://developer.mozilla.org/en-US/docs/Web/API/Element/outerHTML
источник
Используйте element.outerHTML, чтобы получить полное представление элемента, включая внешние теги и атрибуты.
источник
Если у вашего элемента есть родитель
источник
<li>
в списке.Пытаться
источник
Я обнаружил, что для моих вариантов использования мне не всегда нужен весь внешний HTML. У многих узлов слишком много потомков, чтобы их можно было показать.
Вот функция (минимально протестированная в Chrome):
https://gist.github.com/kahunacohen/467f5cc259b5d4a85eb201518dcb15ec
источник
Я потратил много времени, выясняя, что не так, когда я перебираю DOMElements с кодом в принятом ответе. Это то, что у меня сработало, иначе каждый второй элемент исчезнет из документа:
источник
document.getElementsByTagName()
, эта коллекция будет меняться в серединеfor
цикла, следовательно, каждый второй элемент пропускается.при использовании реакции:
источник
.outerHTML
не зависит от React; это стандарт DOM. Посмотрите ответ @Rich Apodaca.reactdom.findDOMNode()
... не то.outerHTML
, но спасибо за позицию.