【问题标题】:ASP.NET and Javascript linking and event orderASP.NET 和 Javascript 链接和事件顺序
【发布时间】:2012-05-04 09:14:03
【问题描述】:

情况:

我正在 ASP.NET 中从一个 HTML 文件构建一个页面,其中包含标记和 javascript、几个 .js 文件、样式表以及 ASP.NET 页面上的一些附加内联 javascript。使用 ASP>NET 开发服务器主机在 Visual Studio 2010 中工作。

XML 和 js 文件由第三方提供,无法更改,其中一个 js 文件是“我们的”文件,可以更改。

HTML 文件是一份可以填写的问卷。目前,我们有一个“托管”HTML 文件并保存答案的桌面应用程序。

总体目标是在网站中托管调查问卷,以便我们可以在网络上复制桌面应用程序的功能。 Javascript 将用于复制 ASP.NET 没有的桌面应用程序。

HTML 文件包含指向 js 文件的 <script> 链接和标记后的一大块内联 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 文件的内容并将它们构建到页面中作为内联脚本块,一切正常。如果我将它们包含为链接,那么 sometimes 上面提到的行会抛出一个 调试器中的“函数未定义”错误。即它的行为就像未加载/包含 javascript 文件一样。据我所知,这不应该发生,因为所有的 javascript 都应该在运行之前加载和解析。

问题:

javascript 是否乱序/异步加载?如果是这样,我怎样才能强制所有的 javascript 在行运行之前加载和解析。

注意事项:

是的,我必须在 ASP.NET 中构建页面,“文件”是动态的,实际上是从 Web 服务中读取的,因此无法事先准备好。我正在尝试创建一种处理多个供应商问卷的通用方法。

第三方 javascript 和标记仅适用于 IE,因为它是一个遗留系统。

由于显而易见的原因,我无法显示实际代码。

【问题讨论】:

    标签: javascript asp.net


    【解决方案1】:

    我找到了与我上面所说的问题无关的答案。

    页面工作时 DOCTYPE 标签不存在,但页面失败时出现。所以问题是第三方标记不符合任何形式的标准,为了让它工作,浏览器必须处于怪癖模式,这是通过省略 DOCTYPE 标记来完成的。

    一点也不明显。

    【讨论】:

      【解决方案2】:

      您是否尝试过使用文档就绪事件来触发“此处调用 our.js 中的函数的代码行;”

      如果你使用 jQuery,你会做这样的事情:

      <script type="text/javascript">
        $(document).ready(function() {
          line of code here that calls function in our.js;
        })
      </script>
      

      如果你不想使用 jQuery,请查看$(document).ready equivalent without jQuery

      另一种选择是在调用你的函数的 ASP.Net 页面的最底部添加标签,例如:

      <html>
       <head>
        <link to CSS>
        <script src=thirdparty.js></script>
        <script src=our.js></script>
       </head>
       <body>
        third party HTML markup
        <script>
        desktop duplication code here;
        </script>
        <script>
         line of code here that calls function in our.js;
        </script>
       </body>
      </html>
      

      【讨论】:

      • 我不允许更改第三方代码,并且 document.ready 已被第三方使用。与 onload 事件一样...我真的受到了预先存在的条件的阻碍。
      • 是否允许包含额外的第三方库,例如 jQuery?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多