![]() |
![]() |
|
v8: Как получить код HTML документа после применения скриптов? | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
13.05.07
✎
11:04
|
Вот для примера у меня код:
<B>SOURCE</B> <SCRIPT language="JavaScript"> document.write("<I>ROBOT</I>")</SCRIPT> А документ выглядит так: <B>SOURCE</B> <I>ROBOT</I> Как получить этот документ после применения скриптов? Как то уже спрашивал, мне ответили, что возможно, но забыл блин, перерыл всю объектную модель, не могу найти... ;-( |
|||
1
Шурик71
13.05.07
✎
11:51
|
.InnerHTML ?
|
|||
2
Шурик71
13.05.07
✎
11:53
|
точнее, innerHTML
|
|||
3
Гений 1С
гуру
13.05.07
✎
11:53
|
(1) неа, не помогает.
|
|||
4
Гений 1С
гуру
13.05.07
✎
11:59
|
documentElement.innerHtml:
<HEAD></HEAD> <BODY><B>SOURCE</B> <SCRIPT language=JavaScript> document.write("<I>ROBOT</I>")</SCRIPT> <I>ROBOT</I> </BODY> documentElement.innerText: SOURCE ROBOT |
|||
5
Звездочёт
13.05.07
✎
17:12
|
(4) почему бы не сделать некий div, куда вставлять свой html-код?
И после этого читать его innerHTML. |
|||
6
Гений 1С
гуру
13.05.07
✎
19:03
|
(5) нет, блин, раньше мне подсказали, хоть убейте. не могу найти ветку или вспомнить способ, там что-то было с рекурсивным обходом, даже скрипт писал. ;-)
|
|||
7
Гений 1С
гуру
15.05.07
✎
11:00
|
Господи, как я туплю, в (4) все уже есть, нужно только теги <SCRIPT> вышвырнуть.
А интересно, InnerHtml применяет таблицы стилей или только скрипты? |
|||
8
sergeante
15.05.07
✎
11:59
|
(7) а при чём тут CSS?
|
|||
9
Гений 1С
гуру
15.05.07
✎
12:14
|
(8) ну css тоже заменяется, или HTML остается неизменным?
ну то бишь в иннерХТМЛ хранится HTML после применения стилей, или без применения стилей. |
|||
10
sergeante
15.05.07
✎
13:20
|
(9) css не заменяется, просто его интерпретирует браузер для отображения хтмл. Т.е. ХТМЛ остаётся неизменным, в отличии от применения скрипта.
|
|||
11
Гений 1С
гуру
15.05.07
✎
14:14
|
(10) понятненько. ;-)
|
|||
12
Гений 1С
гуру
15.05.07
✎
16:22
|
Господа, встал вопрос, а как получить исходный код HTML, потому что что в InnerHTML, что в OuterHTML хранится смесь скрипта с его продукцией:
<HTML><HEAD></HEAD> <BODY><B>SOURCE</B> <SCRIPT language=JavaScript> document.write("<I>ROBOT</I>")</SCRIPT> <I>ROBOT</I> </BODY></HTML> Видите, ROBOT повторяется дважды. Кстати, конечный HTML (убирая из outerHtml, я получаю так): Функция обПолучитьКонечныйHTMLКодHTMLУзла(Узел) Экспорт Если Узел.tagName="SCRIPT" Тогда Возврат ""; КонецЕсли; //Если Р="" Тогда Если Узел.children.length=0 Тогда Возврат Узел.outerHTML; КонецЕсли; Р=""; Для Каждого Эл ИЗ Узел.children Цикл Р=Р+обПолучитьКонечныйHTMLКодHTMLУзла(Эл); КонецЦикла; //Выделяем часть inner из outer Поз=Найти(Узел.OuterHtml,Узел.InnerHtml); Если Поз<>0 Тогда Р=Лев(Узел.OuterHtml, Поз-1)+Р+Прав(Узел.OuterHtml, СтрДлина(Узел.OuterHtml)-СтрДлина(Узел.InnerHtml)-Поз+1); КонецЕсли; Возврат Р; КонецФункции Функция обПолучитьКонечныйHTMLКодHTMLДокумента(Документ) Экспорт Если Документ.documentElement=Неопределено Тогда Возврат ""; КонецЕсли; Возврат обПолучитьКонечныйHTMLКодHTMLУзла(Документ.documentElement); КонецФункции Такой вариант, как предложил товарищ выше не годится, потому что script может встречаться многократно и в составе текстовых строк. ;-) |
|||
13
Гений 1С
гуру
16.05.07
✎
11:31
|
эй, сенсейи!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |