情况:
我在 ASP.NET 中从一个带有标记和 javascript 的 HTML 文件、几个 .js 文件、样式表和 ASP.NET 页面上的一些额外的内联 javascript 构建一个页面。使用 ASP>NET 开发服务器主机在 Visual Studio 2010 中工作。
XML 和 js 文件由第三方提供,不能更改,其中一个 js 文件是“我们的”文件,可以更改。
HTML 文件是一个可以填写的问卷。目前,我们有一个“托管”HTML 文件并保存答案的桌面应用程序。
总体目标是将调查问卷托管在网站中,以便我们可以从网络上的桌面应用程序复制功能。Javascript 将用于复制 ASP.NET 没有的桌面应用程序。
HTML 文件包含<script>
指向 js 文件的链接和标记后的一大块内联 javascript。内联 javascript 中的一行(不是函数,是实际的代码行)调用“我们的”包含文件中的函数。
在 ASP.NET 代码中,我从 HTML 文件中提取内容并将其应用于构建 ASP.NET 页面。CSS 链接、脚本链接、标记、内联脚本块等。所以输出响应如下所示:
<html>
<head>
<link to CSS>
<script src=thirdparty.js>
<script src=our.js>
</head>
<body>
third party HTML markup
<script>
line of code here that calls function in our.js;
</script>
<script>
desktop duplication code here;
</script>
</body>
</html>
如果我复制 js 文件的内容并将它们作为内联脚本块构建到页面中,一切正常。如果我将它们作为链接包含,那么有时上面提到的行会在调试器中引发“函数未定义”错误。即它的行为就像没有加载/包含 javascript 文件一样。据我所知,这不应该发生,因为所有的 javascript 都应该在运行之前加载和解析。
问题:
javascript 是否乱序/异步加载?如果是这样,我怎样才能在运行该行之前强制所有 javascript 加载和解析。
笔记:
是的,我必须在 ASP.NET 中构建页面,“文件”是动态的,实际上是从 Web 服务中读取的,因此无法事先准备好。我正在尝试创建的是一种处理多个供应商问卷的通用方法。
第三方 javascript 和标记仅适用于 IE,因为它是一个遗留系统。
由于明显的原因,我无法显示实际代码。