我一直在asp.net webforms工作,我一直在做一個UserControl,取決於一小部分的JavaScript在外部文件。asp.net確保JavaScript只加載一次
我想能夠在UserControl中引用JavaScript以確保它在頁面上被加載,但問題在於UserControl可能會在頁面上多次出現,所以我只希望腳本加載UserControl的第一個實例。
是否有一種簡單的方法可以在ASP.NET Webforms中執行此操作?
我一直在asp.net webforms工作,我一直在做一個UserControl,取決於一小部分的JavaScript在外部文件。asp.net確保JavaScript只加載一次
我想能夠在UserControl中引用JavaScript以確保它在頁面上被加載,但問題在於UserControl可能會在頁面上多次出現,所以我只希望腳本加載UserControl的第一個實例。
是否有一種簡單的方法可以在ASP.NET Webforms中執行此操作?
使用ClientScriptManager
的RegisterClientScript()
方法來處理這個問題。在你的情況下,由於你包含了來自外部文件的腳本,使用RegisterClientScriptInclude()
。或者,如果您使用的是UpdatePanels,請使用ScriptManager
的等效方法Register...()
。
引用頁面本身HEAD中的腳本。
<html>
<head>
...
<script src="<name of file>" type="text/javascript"></script>
...
</head>
<body>
...
</body>
</html>
如果你控制它的內容,你也可以在JS文件本身中處理這個問題。
var myObj = myObj || {}; // Variable to namespace your work
// Make sure we do our work only once
if (!(myObj.token)) {
// do our work here...
myObj.token = {}; // this ensure we won't enter the if block the next time
}
我不知道這將如何確保腳本文件只被加載一次?它會檢查一個腳本是否已被加載,但是能否解釋它將如何確保腳本不會被多次加載? – lomaxx 2010-01-07 01:05:25
是的,從技術上講,該腳本在頁面DOM中包含兩次,並且將由瀏覽器處理兩次。不同的是,在第二遍時,沒有任何反應,因爲myObj.token已經被定義。 – 2010-01-07 05:30:48
正是我所期待的。謝謝 – lomaxx 2010-01-07 01:03:24