2010-01-20 3 views
4

OK Я не использую js, чтобы знать, но есть ли способ получить настоящий исходный код страницы с ним?Получение реального исходного кода с помощью javascript?

document.body.innerHTML, например, дает какую-то «исправленную» версию, в которой были удалены неправильные теги.

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

+1

Почему это кажется глупым? – Upperstage

+1

Зачем нужен код? Это повлияет на то, какой инструмент вы используете. Т.е. если вам нужно его просмотреть, то FireBug, иначе, если вам нужно обходить его, XMLHttpRequest –

+0

Кажется немного глупым для меня, что браузеры не сохраняют исходный материал точно. Почему в модели DOM не могут быть введены неверные теги, даже если они не нарисованы или что-то еще? – graw

ответ

4

Это происходит потому, что браузеры анализируют DOM и не сохраняют HTML в памяти. То, что возвращается вам, - это преобразование браузера текущего DOM обратно в HTML, что является причиной тегов в верхнем регистре и отсутствие закрывающих тегов, где это применимо.

XMLHttpRequest - лучший способ пойти. В большинстве случаев, предполагая, что сервер не отправляет заголовок без кэша, и HTML-страница закончила загрузку, XMLHttpRequest будет почти мгновенным, потому что файл извлекается из кеша.

+3

Однако, если страница динамически генерируется на сервере, содержимое может быть изменено между исходной загрузкой и получением ее через XMLHttpRequest. – ntownsend

+0

Спасибо всем за очень быстрый совет! Мне нужен malformed html/javascript для синтаксического анализа, и я предполагаю, что он не попадает в DOM, хотя он выполняется. Да, я полагаю, что XMLHttpRequest будет достаточно быстрым. – graw

+0

@ntownsend - очень хорошая точка. –

2

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

3

Для доступа к JS одного и того же происхождения XMLHttpRequest в порядке. Вы можете иметь доступ к любому JS-документу в «сыром» формате, используя этот метод, не заставляя браузер мешать (т. Е. Преобразовать в DOM и обратно).

Я не уверен, что я ваш комментарий re: XMLHttpRequest глупо: это потому, что вы беспокоитесь о возможном дублировании работы? то есть получить код 2 раз от исходного сервера.

Смежные вопросы