2010-01-06 70 views
6

我一直在asp.net webforms工作,我一直在做一个UserControl,取决于一小部分的JavaScript在外部文件。asp.net确保JavaScript只加载一次

我想能够在UserControl中引用JavaScript以确保它在页面上被加载,但问题在于UserControl可能会在页面上多次出现,所以我只希望脚本加载UserControl的第一个实例。

是否有一种简单的方法可以在ASP.NET Webforms中执行此操作?

回答

9

使用ClientScriptManagerRegisterClientScript()方法来处理这个问题。在你的情况下,由于你包含了来自外部文件的脚本,使用RegisterClientScriptInclude()。或者,如果您使用的是UpdatePanels,请使用ScriptManager的等效方法Register...()

+0

正是我所期待的。谢谢 – lomaxx 2010-01-07 01:03:24

-1

引用页面本身HEAD中的脚本。

<html> 
    <head> 
     ... 
     <script src="<name of file>" type="text/javascript"></script> 
     ... 
    </head> 
    <body> 
     ... 
    </body> 
</html> 
0

如果你控制它的内容,你也可以在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 

} 
+0

我不知道这将如何确保脚本文件只被加载一次?它会检查一个脚本是否已被加载,但是能否解释它将如何确保脚本不会被多次加载? – lomaxx 2010-01-07 01:05:25

+0

是的,从技术上讲,该脚本在页面DOM中包含两次,并且将由浏览器处理两次。不同的是,在第二遍时,没有任何反应,因为myObj.token已经被定义。 – 2010-01-07 05:30:48