首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何判断ASP.NET页面中是否已包含JavaScript文件?

问如何判断ASP.NET页面中是否已包含JavaScript文件?
EN

Stack Overflow用户
提问于 2009-05-25 23:59:52
回答 7查看 8.7K关注 0票数 13

我有一个ASP.NET用户控件(.ascx文件)。在这个用户控件中,我想使用一个.js文件。

因此,我在页面上包含了<script src="file.js" type"text/javascript"></script>。

但是,有时我会在已经加载了相同脚本的网页中使用此用户控件。

如果页面还没有包含相同脚本的另一个<script />标记,我如何才能添加一个在页面上呈现的<script />声明?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-05-26 00:31:02

因为您正在使用asp.net,所以在服务器端进行检查是有意义的,因为您将选择在服务器端添加对javascript文件的引用。从您的.ascx文件中,您可以使用以下内容进行注册:

代码语言:javascript
复制
this.Page.ClientScript.RegisterClientScriptInclude("GlobalUnqiueKey", UrlOfJavascriptFile);

..。在您的页面中,您只需直接调用ClientScript对象:

代码语言:javascript
复制
ClientScript.RegisterClientScriptInclude("GlobalUnqiueKey", UrlOfJavascriptFile);

'GlobalUniqueKey‘可以是任何字符串(我也使用了javascript文件的url )

如果您尝试使用相同的密钥字符串注册脚本,它不会执行任何操作。因此,如果你在你的页面,你的控件或者其他任何地方调用它,你最终只会在你的页面中有一个引用。这样做的好处是,您可以在一个页面上拥有一个控件的多个实例,即使它们都试图注册相同的脚本,但它最多只能注册一次。而且他们都不需要担心脚本已经被注册了。

有一个'IsClientScriptIncludeRegistered(stringkey)‘方法,你可以用它来查看脚本是否已经包含在该键下,但是在注册之前进行检查似乎是非常多余的,因为多次尝试注册不会抛出异常或导致任何其他错误。

执行客户端检查意味着,假设浏览器缓存了多个javascript引用(它们可能没有),您仍然有多个标记,并且每个标记的开销会导致一些javascript运行。如果一个页面上有20个控件实例,可能会出现严重的问题。

票数 12
EN

Stack Overflow用户

发布于 2009-05-26 00:10:48

你可以在客户端做两件事中的一件。

  1. 检查dom中与您想要检查的javascript文件相对应的脚本标记
  2. 测试您知道在javascript文件中已定义/将定义的变量或函数是否为未定义。

下面是一个快速的JS函数,它使用JQuery来执行您需要的操作:

代码语言:javascript
复制
function requireOnce(url) {    
    if (!$("script[src='" + url + "']").length) {
        $('head').append("<script type='text/javascript' src='" + url + "'></script>"); 
    }
}
票数 6
EN

Stack Overflow用户

发布于 2009-05-26 00:10:03

使用类似以下内容:

代码语言:javascript
复制
if(typeof myObjectOrFunctionDecalredInThisScript != 'undefined') {
  // code goes here
  var myObjectOrFunctionDecalredInThisScript = { };
}

这将测试您的对象或函数是否已经存在,从而防止重新声明。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/908425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档