6
现在我明白了how to access原始HTML + Javascript(通过HTTP GET接收)以及在页面加载完成时自动处理Javascript的呈现结果,我需要了解它是如何完成的:浏览器如何自动将“Page Source”Javascript转换为HTML?
- 是否有特定的Javascript功能 ,嵌入在原始HTTP GET resonse,浏览器看起来 了,发现的时候,它只是简单地调用 呢? (换句话说,就是它的 责任 网页程序员的指示浏览 扫描原始内容和 替代所有非交互式 Javascript来HTML?)
- 是否浏览器分析整个 页,寻找某些线索,然后 然后决定要转换什么?如果是这样, 这些线索是什么,以及它如何被 完成?
在这个问题上是完全新鲜的,很可能以上都不适用,而且诀窍是以完全不同的方式完成的。如果情况确实如此,您是否会如此友善以引导我如何重新提出问题?
感谢伟大的答案。可以请为我澄清以下内容吗?我理解HTML/Javascript/DOM的交互部分,即onClick,onMouseOver等。 - 浏览器在生成“呈现的”HTML时会保持完整。但是它如何知道什么*不*完好保留,而是在页面完成时运行它? “什么时候感觉”意味着什么?没有一个标准可以遵循吗?是一类必须自动执行的Javascript函数吗? – PeSmith 2011-03-14 22:56:06
@PeSmith:抱歉抱歉,我不确定我是否回答你的观点,但是所有JavaScript都是“自动执行”的:当浏览器遇到'
浏览器解析HTML代码,当遇到包含在适当
<script>
标记中的JavaScript代码时,它会评估遇到的JavaScript,从而导致用户可见的文档结构和/或内容更改。来源
2011-03-14 22:34:42
没有。见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
来源
2011-03-14 22:35:35 Quentin
HTML被加载顺序。当发现脚本标记时,浏览器执行脚本。例如:
但是,如果您有以下文件
什么都不会发生,因为在浏览器中执行脚本的时候,浏览器还没有发现,那么测试DIV呢。
来源
2011-03-14 22:35:37 Bart
我冲你最后一个线程。 让我告诉你, 浏览器有一个HTML版本的页面和一个DOM(文档对象模型)版本。 只要Javascript改变了一些东西,就会在DOM中改变它。起初DOM从页面HTML生成,
因此,Javascript不会改变页面源代码。
在这里你的问题是完全无关的,因为浏览器执行此操作加载一个页面:
浏览器开始运行接收到的数据从顶部到底部的所有javascript。您还可以将JavaScript函数分配给页面上的元素事件,以便在事件触发时自动调用指定的javascript函数。
解析HTML并运行其JavaScript与HTTP协议无关,只能在自己的计算机上完成(在您的磁盘上打开HTML文件)。
来源
2011-03-14 22:37:39 AbiusX
这不是我的领域,但我认为JavaScript在HTML解析阶段运行 - 在脚本运行时HTML解析暂停。这是因为JavaScript包含'document.write',它将HTML内容写入DOM。然后,我不知道浏览器是否会停止解析HTML,或者您的描述是否与他们实际做的更接近。 – 2011-03-14 22:47:03
@Paul - 我的理解是,解析器传统上会停止解析,因为您可以执行像document.write('<! - ')'这将从根本上改变剩余的DOM看起来像什么。从理论上讲,解析器可以为DOM状态添加书签,*暂时*预读解析,如果在脚本中遇到document.write,则返回跟踪。鉴于在HTML5中引入'async'属性,我猜测浏览器不这样做。 – Alohci 2011-03-15 00:33:49
当Web浏览器解析HTML页面时,如果遇到
<script>
元素,它将停止解析HTML,并立即在*中(或链接到)<script>
元素运行JavaScript。JavaScript代码可以修改页面的DOM(文档对象模型 - JavaScript可以访问的HTML的程序化表示形式),从而更改浏览器显示的呈现HTML。 (它也可以将函数分配给DOM节点上的内置事件处理程序,以便可以运行某些JavaScript,例如,当用户单击链接或文档加载完成时。)
因此它确实完全网页程序员有责任做到这一点。浏览器不会猜测如何处理下载的JavaScript。他们跑步并服从它。
(*这是一个有点简单化:在
defer
属性可以防止脚本被立即执行。)来源
2011-03-14 22:40:32
在这个级别上它并不重要,但是当分析器遇到''标签时脚本执行会更准确些。如果通过在分析器输入流中注入字符来考虑document.write的工作方式,这是有道理的。 – Alohci 2011-03-15 00:19:41
@Alohci:啊,是的,我明白你的观点。我会把“
相关问题