2011-07-11 43 views
1

这不是一个真正的关键问题,我只是不明白为什么它不起作用。我正在使用mvc3作为web应用程序,并且我在_Layout标题中包含了一个global.js脚本。它运行得很好。MVC3 Javascript无法关闭页

我有一个页面上有更多的JS,所以我不想将它全部包含在全局文件中。问题是,JavaScript只有在页面上,底部和脚本标签中才有效。如果我把JS放在它自己的文件中并使用脚本src标记,无论是在页面上还是在_Layout中,JS都不会运行。它显示在来源虽然。

我甚至尝试过移动碎片。如果一个函数或处理程序从页面移动到它自己的文件,那么这个文件就不会工作。不动的部分继续运行。

没有更改代码。如果我只是把它从页面上取下来,把它放在它自己的文件中,并链接到它,代码就不再起作用。使用$(document).ready(function())注册函数。两个脚本不允许这样做吗?我唯一能想到的另一件事是,body页面(从_Layout的@RenderBody()渲染)不能链接到脚本。

+0

您当然可以在页面中拥有多个文档就绪处理程序。 – Patricia

+0

不要只是接受一个答案,以保持您的利率高!该比率是一个无用的指标,支持*正确的*响应。将未解决问题的答复标记为*接受*并不能帮助互联网。 –

回答

2

你是如何引用这些外部js文件?您应该使用的网址助手以确保他们正确的路径:

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

现在这个外部myscript.js内,这取决于你在<head>部分或在闭幕式</body>你应该使用$(document).ready与否之前结束引用它。

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

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

这可以通过每个视图可用于包括其特定的脚本:

@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'); 
}); 

您可以包括尽可能多的外部脚本,只要你喜欢(虽然你应该他们的人数减少到严格的最低,以避免额外的HTTP连接为每YSlow recommendations

+0

我以前没有看过渲染/脚本的东西,我会试试看。为什么不把它放在document.ready中呢? – Tyrsius

+0

这也没有工作。我尝试粘贴相同的js,并删除文档准备好,但都没有工作。 – Tyrsius

0

我只是假设你已经在你的JavaScript中的错字错。尝试使用Firebug或Chrome加载页面,并查看错误日志;

+0

如果出现拼写错误,则它仍然在页面上时不起作用,但它确实存在。我不是重新输入整个东西,我剪切和粘贴。它在一个地方工作,而不是另一个地方。 – Tyrsius