2011-07-11 55 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