Javascript首先执行,然后在身体加载中执行文本

时间:2017-08-01 23:30:00

标签: javascript html

为什么在我的浏览器中,当我首先运行我的java脚本文件然后它运行文本在体内,但当我在stackoverflow javascript片段工具中运行它运行正常。

var name= prompt("enter your name");
var age= prompt("enter your age");
var pet_name= prompt("enter your fav pets name");

alert("hi "+name+" your age is "+age+"and you love"+pet_name);
console.log("hi "+name+" your age is "+age+"and you love"+pet_name);
<!DOCTYPE html>
<html>
<head>
	<title>testing javascript</title>
</head>
<body>

<h4>Testing of my first java script</h4>

<script type="text/javascript" src="test_1.js"></script>

</body>
</html>

3 个答案:

答案 0 :(得分:1)

我相信这是因为提醒,确认和提示都是阻止&#39;函数和它们在渲染发生的同时被调用,尝试将代码放入setTimeout或文档就绪:

document.addEventListener("DOMContentLoaded", function(event) { 
  // your code
});

var delayedScript = function() {
  // your code
}

setTimeout(delayedScript, 500);

https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt#Notes

  

对话框是模态窗口;它们阻止用户访问程序界面的其余部分,直到对话框关闭

答案 1 :(得分:0)

看起来您的代码执行得很好,因此我能想到的唯一结论是脚本标记未正确实现。

确认其名称确实是&#39; test_1.js&#39;,并且它与您的html所在的文件位于同一位置。

如果不是,您可以使用relative path

其他几点:

  1. javascript类型是多余的,因为Javascript是网络的默认脚本语言。
  2. 您在年龄变量之后和“爱情”之后缺少空格。字符串。
  3. 我希望这会有所帮助:)

答案 2 :(得分:0)

该行为是特定于浏览器的。在呈现页面之前,特定浏览器可能会等到页面的输入流结束:可能仍然需要在页面顶部呈现位于文件末尾附近的定位元素。

现在,javascript中的弹出对话框,如alertconfirmprompt对脚本有一个同步阻止操作,可以暂停HTML解析,直到它们被响应为止。因此,浏览器(例如Chrome)在页面输入完成之前不会呈现,在提示被解答或解除之前,不会显示脚本块上方的文本。

Firefox等逐渐渲染页面的浏览器可能会显示脚本块上方的文本。

SO中的代码段工具的工作方式不同。它处理HTML框中的内容,将其放入输出窗格,然后处理脚本面板中的内容。所以HTML内容首先出现。

需要等待窗口“加载”或文档“DOMContentLoaded”事件的代码片段未使用代码段工具正确测试

在页面呈现后使用弹出对话框的一般解决方案(如已建议)推迟处理相关代码,直到在文档上触发“DOMContentLoaded”事件或在窗口上“加载”为止。