基本的javascript流-在各种浏览器
Basic javascript flow - in various browsers
我正试图用一个非常简单的JavaScript示例学习JavaScript中的流程,但三个浏览器(Chrome, IE和Firefox)都显示出不同的流程模式和不同的最终结果。我知道有跨浏览器的问题是意料之中的,但这个是超级简单的。所以我试图理解如何解释JavaScript实际上是如何流动的。
代码如下:
<!DOCTYPE html>
<html>
<head>
<title>Test 01</title>
<script type="text/javascript">
document.bgColor = "red";
</script>
</head>
<body bgColor="yellow">
<p>Paragraph 1</p>
<script>alert("after para 1");</script>
<p>Paragraph 2</p>
<script>alert("after para 2");</script>
<p>Paragraph 3</p>
<script>alert("after para 3");</script>
</body>
</html>
我所看到的是"第1段"文本显示在Chrome浏览器后的警报等其他两个警报也。IE和Firefox似乎在做正确的事情——在警告之前显示文本。
在IE和Firefox之间,IE的背景是红色的,Firefox的背景是黄色的。所以不确定该怎么解释…所有浏览器的行为都是不同的。
你怎么知道这到底是怎么工作的?
编辑:删除与这个问题无关的var x=10。问题是如何解释在相关文本之前显示警报的chrome行为-以及为什么bgcolor在一种情况下被覆盖而在其他情况下没有被覆盖。欢迎来到浏览器中的JavaScript世界。不同浏览器之间的行为是不同的,不例外。
知道你的代码所做的是不被推荐的应该会有所帮助。任何有实际作用的JavaScript语句(比如你的警报)应该只出现在body标签结束之前。
当你不尊重这一点,并试图在浏览器仍在渲染页面时运行代码时,糟糕的事情就会发生。但是,在此之前可以有任意数量的声明,只要在文档主体结束之前不调用它们。
我试图学习流在JavaScript与一个非常简单的JavaScript的例子,但三个浏览器(Chrome, IE和Firefox)都其中三种表现出不同的流动模式和不同的最终结果。
你说的是不同浏览器中的HTML引擎。所以这是关于处理HTML而不是处理javascript…
你怎么知道这到底是怎么工作的?
那取决于……我喜欢创建单页javascript应用程序,它在窗口之前不会加载太多HTML。onload(或DOMContentLoaded)事件触发。所以我从一个空的主体开始,完全用javascript构建页面。在一些项目中,你需要优雅地降级,你可以从HTML开始实现一些基本功能,然后添加javascript来实现更高级的功能。在这种情况下,如果代码想对DOM执行任何操作,则需要等待前面提到的事件。否则,无法保证浏览器呈现DOM元素和执行javascript命令的顺序。所以我同意Diogo Sperb的观点,你从一个糟糕的练习开始。离岸金融中心。您可以在DOM加载之前运行javascript代码,但这些代码不应该涉及DOM。例如,你可以向服务器发出XHR请求,或者使用历史API来覆盖URI,等等……您甚至可以通过使用文档片段创建DOM元素,但不应该呈现它们。据我所知,呈现DOM元素是同步的,所以你不会有类似的问题后,DOM加载。
只是提一下,现在没有人使用alert()
,我们使用console.log()
,它不会阻止页面加载。
注意:我不明白为什么人们不给你的问题投票。我认为这是一个很好的javascript初学者问题。我猜恨我的人会恨我的。: -)
- 如何知道浏览器javascript的名称
- 跨浏览器javascript下载功能
- 如何避免在浏览器 JavaScript 中双击时(单击鼠标)处理
- 有没有办法从浏览器javascript打开Windows 10上的Microsoft地图
- 如何从应用程序的服务器端向浏览器 JavaScript 发送事件
- 浏览器Javascript - 任何了解用户当前IP的方法
- 如何强制浏览器/javascript 清除/忽略缓存文件
- 在浏览器 (javascript) 中将 Cognito 凭证与 AWS 配合使用时,不断收到“缺少凭证”错误
- 读取使用浏览器 Javascript 忽略的文件
- 如何在浏览器 JavaScript 中维护来自同一站点的不同页面加载的状态
- 跨浏览器JavaScript,用于从用户的选择中获取和替换确切的HTML
- 在关闭浏览器 javascript 时删除本地存储
- 如何在android浏览器javascript中捕获退格键代码
- 使用JavaScript启用和禁用浏览器JavaScript选项
- 浏览器Javascript:setTimeout和主程序
- 了解开发者控制台在当前浏览器(JavaScript)中是否处于活动状态
- 是否可以验证浏览器Javascript会话的完整性
- 我们可以期待一个浏览器javascript API到DNS解析程序
- node.js和浏览器javascript的配置相同
- 使用浏览器JavaScript SDK检查AWS S3上是否存在文件