Shi*_*mmy 13 html javascript asp.net script-tag
我有一个ASP.NET用户控件(.ascx文件).在这个用户控件中我想使用.js文件.
所以我<script src="file.js" type"text/javascript"></script>
在页面上加入.
但是,有时我会在已加载此相同脚本的网页中使用此用户控件.
<script />
如果页面尚未包含<script />
同一脚本的另一个标记,我该如何添加将在页面上呈现的声明?
Nei*_*den 12
当您使用asp.net时,检查服务器端是有意义的,因为这将是您选择添加对javascript文件的引用的位置.从.ascx文件中,您可以注册以下内容:
this.Page.ClientScript.RegisterClientScriptInclude("GlobalUnqiueKey", UrlOfJavascriptFile);
Run Code Online (Sandbox Code Playgroud)
...从您的页面直接调用ClientScript对象:
ClientScript.RegisterClientScriptInclude("GlobalUnqiueKey", UrlOfJavascriptFile);
Run Code Online (Sandbox Code Playgroud)
'GlobalUniqueKey'可以是任何字符串(我也使用javascript文件的url)
如果您尝试使用相同的键字符串注册脚本,则它不会执行任何操作.因此,如果您在自己的页面,控件或其他任何地方调用此选项,则最终只会在页面中显示一个引用.这样做的好处是,您可以在页面上拥有多个控件实例,即使它们都尝试注册相同的脚本,也只能执行最多一次.并且他们都不需要担心脚本已经注册.
有一个'IsClientScriptIncludeRegistered(stringkey)'方法,您可以使用该方法查看该密钥是否已包含在该密钥下,但在注册多次尝试注册之前执行该检查似乎非常多余,不会抛出异常或导致任何其他错误.
执行检查客户端意味着,假设浏览器缓存了多个javascript引用(它们可能不是),您仍然有多个标记,每个标记的顶部都会导致一些javascript运行.如果您在页面上有20个控件实例,则可能会出现严重问题.
你可以做客户端的两件事之一......
这是一个快速的JS函数,它使用JQuery来完成你需要的东西:
function requireOnce(url) {
if (!$("script[src='" + url + "']").length) {
$('head').append("<script type='text/javascript' src='" + url + "'></script>");
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8081 次 |
最近记录: |