Как браузер автоматически конвертирует Javascript "Page Source" в HTML? - PullRequest
6 голосов
/ 15 марта 2011

Теперь, когда я понимаю , как получить доступ к как к необработанному HTML + Javascript (полученному через HTTP GET), так и к результату автоматической обработки Javascript после завершения загрузки страницы, мне нужно понять,как это делается:

  1. Существует ли специальная функция Javascript, встроенная в необработанный HTTP-анализ GET, которую ищет браузер, и, когда ее находят, он просто вызывает ее?(другими словами, отвечает ли программист веб-страницы за то, чтобы браузер сканировал необработанный контент и заменял весь неинтерактивный Javascript на HTML?)
  2. Анализирует ли браузер всю страницу в поискахопределенные сигналы, а затем решает, что преобразовать?Если да, что это за сигналы и как это делается?

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

Ответы [ 6 ]

3 голосов
/ 15 марта 2011

Когда веб-браузер анализирует HTML-страницу, если он обнаруживает элемент <script>, он прекращает синтаксический анализ HTML и немедленно запускает JavaScript в элементе <script> (или связан с ним) *.

Код JavaScript может изменить DOM страницы (Document Object Model - программное представление HTML-кода, к которому может обращаться JavaScript) и, таким образом, изменить отображаемый HTML-код, отображаемый браузером. (Он также может назначать функции встроенным обработчикам событий на узлах DOM, чтобы можно было запускать некоторый JavaScript, например, когда пользователь нажимает на ссылку или когда документ заканчивает загрузку.)

Таким образом, программист веб-страницы действительно несет полную ответственность за это. Браузеры не догадываются, что делать с загруженным JavaScript. Они бегут и подчиняются этому.

(* Это немного упрощает: атрибут defer может препятствовать немедленному запуску скрипта.)

3 голосов
/ 15 марта 2011

HTML загружается последовательно. Когда тег сценария обнаружен, браузер выполняет сценарий. Например:

<div id="test"></div>
<script type="text/javascript">document.getElementById("test").innerHTML = "Hi there!";</script>

Однако, если у вас есть следующий документ

<script type="text/javascript">document.getElementById("test").innerHTML = "Hi there!";</script>
<div id="test"></div>

ничего не произойдет, потому что во время выполнения сценария браузером браузер еще не обнаружил тестовый div.

3 голосов
/ 15 марта 2011

Спецификация HTML определяет обстоятельства, при которых работает Javascript.Какой-то javascript он прикреплен к атрибутам onSOMETHING и работает в определенное время.Одним из важных примеров этого является «onload».Другой Javascript просто находится в блоках верхнего уровня внутри <script> элементов.По спецификации, браузер запускается так, что когда угодно, просто по порядку.

Нет преобразования и заменыJavascript - это язык программирования.Браузер запускает код.В некоторых случаях код взаимодействует с деревом DOM для создания отображаемого содержимого.В других случаях это не так (например, отправка информации через соединение).

1 голос
/ 15 марта 2011

Я красную твою последнюю тему.Позвольте мне сказать вам следующее: в браузере есть HTML-версия страницы и DOM-версия (Document Object Model).Всякий раз, когда Javascript что-то меняет, это изменяется в DOM.Сначала DOM генерируется из страницы HTML,

Так что Javascript не меняет источник страницы.

Ваш вопрос здесь совершенно не имеет значения, так как браузер выполняет эту операцию для загрузки страницы:

  1. HTTP-запрос на получение данных (возможно, HTML-документ)
  2. Анализ полученных данных (если это HTML)
  3. Поиск других ресурсов в проанализированных данных (ссылкив другие javascript, css, изображения и т.

Браузер запускает весь javascript сверху донизу полученных данных.Вы также можете назначить функцию Javascript для событий элементов на странице, чтобы при срабатывании события автоматически вызывалась указанная функция javascript.

Анализ HTML и запуск его javascript не имеет ничего общего с протоколом HTTPи может быть сделано исключительно на вашем собственном компьютере (открытие HTML-файла на вашем диске).

1 голос
/ 15 марта 2011

Браузер анализирует HTML-код и, обнаружив код JavaScript, заключенный в соответствующие теги <script>, оценивает обнаруженный JavaScript, который может привести к изменениям структуры документа и / или содержимого, которые становятся видимыми для пользователя.

0 голосов
/ 15 марта 2011

Существует ли специальная функция Javascript, встроенная в необработанный резонанс HTTP GET, которую ищет браузер, и, когда ее находят, она просто вызывает ее?(другими словами, отвечает ли программист веб-страницы за то, чтобы браузер просканировал необработанный контент и заменил весь неинтерактивный Javascript на HTML?)

Нет.Здесь очень много.См. http://dev.opera.com/articles/view/creating-and-modifying-html/

(На самом деле, вы, вероятно, должны начинать с http://dev.opera.com/articles/view/1-introduction-to-the-web-standards-cur/#toc)

Анализирует ли браузер всю страницу, ищет определенные сигналы и затем решаетчто конвертировать?Если да, что это за сигналы

<script>

и как это делается?

DOM

...