Я считаю, что все знакомы с атрибутом Innerhtml объекта DOM, но Outerhtml менее используется. Атрибут innerhtml возвращает HTML, содержащийся в объекте DOM из тега Start к тегу END, в то время как атрибут OuterHTML возвращает HTML, включая тег объекта DOM. Следующий рисунок может объяснить разницу между двумя атрибутами хорошо:
Outerhtml - это частная собственность, принадлежащая IE в начале. Вы можете просмотреть описание на MSDN: Overhtml свойство (http://msdn.microsoft.com/en-us/library/ms534310(vs.85).aspx). В настоящее время IE, Chrome, Safari и Opera могут поддерживать этот атрибут. Причина, по которой Outerhtml не поддерживает Firefox, этот атрибут всегда будет возвращаться в Firefox. Приятно, что HTML5 добавит этот атрибут.
Пусть Firefox поддерживает атрибуты Outerhtml, расширяя прототип HTMlelement:
Кода -копия выглядит следующим образом:
if (typeof (htmleLement)! = "Не определено") {
Htmlelement.prototype .__ definesetter __ ("Outerhtml", функция (s) {
var r = this.ownerdocument.createrange ();
r.setStartbefore (это);
var df = r.createcontextualfragment (ы);
this.parentnode.replacechild (df, это);
возврат S;
});
Htmlelement.prototype .__ definegetter __ ("Outerhtml", function () {
var a = this.attributes, str = "<" this.tagname, i = 0;
для (; i <a.length; i)
if (a [i].
str = "" Hormis Dans Les Machines A SO предпочитает вселенные, Les Casinos Off Res Jeux Par Пример Grandes Six Roues, Pai Go Poker, Blackjack, Baccarat, la <a href = "http://topcasinosenligne.com/la-roulette"> roulette </a> et le-craps, entre. a [i] .name "=" "a [i] .value" "" ";
if (! this.canhavechildren)
вернуть str " />";
вернуть str ">" this.innerhtml "<!-" this.tagname "->";
});
Htmlelement.prototype .__ definegetter __ ("canhavechildren", function () {
Возвращаться
!/^(область | база | BaseFont |
Col | Frame | Hr | Img | Br |
Ввод | Isindex | Ссылка | Мета
| param) $/. test (this.tagname.tolowercase ());
});
}
Этот метод поступает от W3Help (http://www.w3help.org/zh-cn/causes/sd9017), что немного громоздко и требует вторжения в прототип. Есть также более простая альтернатива. Сначала создайте пустой узел, добавьте объект DOM, чтобы получить атрибут OUTERHTML к этому пустому узлу, а затем получить доступ
Кода -копия выглядит следующим образом:
Функция outterhtml (elem) {
if (typeof elem === "string") elem = document.getElementbyId (elem);
// Создать пустой узел div
var div = document.createElement ("div");
// вставить копированную элемкопи в пустой девственный узел
div.appendchild (elem.clonenode (true));
// вернуть содержание HTML в Div
вернуть div.innerhtml;
};
По сравнению с вышеупомянутым методом, нет необходимости перемещать прототип, а количество кода намного меньше. Я считаю, что будут другие решения.