我用jQuery开发了一个脚本,每次更改<select>
选项时都会执行一些逻辑。
最初我将该脚本添加到MasterPage
,以确保每个页面都被考虑 - 但是,我有一些外部页面(aspx
)不使用{{1因此,没有脚本。
为了解决这个问题,我将相同的脚本添加到自定义控件中,该控件呈现为MasterPage
并且也存在于这些外部页面中。不幸的是,通过这种方式,脚本执行两次,而不是仅执行一次。
如何更改我的代码以确保脚本将在每个页面中执行,但只需执行一次?
答案 0 :(得分:1)
用户.net的ClientScriptManager.RegisterClientScriptInclude,它有一个关键参数,因此它只会注册每个键一次。在您的母版页和用户控件中,只需确保使用相同的密钥注册它们。
你也可以使用jquery来查看它是否已经注册并添加id:
function requireOnce(url) {
if (!$("script[scr='" + url + "']").length) {
$('head').append("<script type='text/javascript' src='" + url + "'></script>");
}
}
以上摘自here
答案 1 :(得分:0)
如果您正在使用包含脚本的封装控件,则从Master
中删除原始脚本,并在两个页面中使用所述控件。除非我错过了什么,这就是说:
MasterPage
MasterPage
答案 2 :(得分:-1)
我不希望asp.net处理我的JavaScript,因此我创建了一个全局变量isPostBack
并默认将其设置为false。当页面进行回发时,我将window.isPostBack = true;
添加到页面中。现在你的javascript只需检查全局变量(if(window.isPostBack){...}
)。