gpt4 book ai didi

javascript - MVC3 Javascript 在页面外不起作用

转载 作者:行者123 更新时间:2023-11-30 18:41:48 25 4
gpt4 key购买 nike

这并不是一个严重的问题,我只是不明白为什么它不起作用。我正在将 mvc3 用于 Web 应用程序,并且我有一个包含在 _Layout header 中的 global.js 脚本。它运行得很好。

我有一个页面有很多 JS,所以我不想将它们全部包含在全局文件中。问题是,javascript 只有在页面底部的脚本标记中才有效。如果我将 JS 放在它自己的文件中并在页面上或 _Layout 中使用脚本 src 标记,则 JS 不会运行。不过它出现在源代码中。

我什至试过移动棋子。如果函数或处理程序从页面移动到其自己的文件,则该部分将不起作用。未移动的部分继续运行。

代码没有变化。如果我只是把它从页面上拉下来,放在它自己的文件中,然后链接到它,代码就不再有效了。两者都使用 $(document).ready(function ()) 注册函数。不允许两个脚本执行此操作吗?我唯一能想到的另一件事是正文页面(从 _Layout 的 @RenderBody() 呈现)无法链接到脚本。

最佳答案

您如何引用那些外部 js 文件?您应该使用 URL 帮助程序来确保它们的正确路径:

<script src="@Url.Content("~/Scripts/myscript.js")" type="text/javascript"></script>

现在在这个外部 myscript.js 里面,取决于您是否在 <head> 中引用了它收盘前的部分或末尾</body>你应该使用 $(document).ready还是不是。

你可以做的是定义一个 scripts _Layout.cshtml 部分:

    ...
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
@RenderSection("scripts", false)
</body>

每个 View 都可以使用它来包含其特定脚本:

@section scripts {
<script src="@Url.Content("~/Scripts/myscript.js")" type="text/javascript"></script>
}

最后进入 myscript.js您可以直接操作 DOM 而无需包装 document.ready :

$('form').submit(function() {
alert('submitting a form');
});

您可以包含任意数量的外部脚本(尽管您应该将它们的数量减少到严格的最小值以避免根据 YSlow recommendations 额外的 HTTP 连接)

关于javascript - MVC3 Javascript 在页面外不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6655231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com