避免母版页和 Iframe 子页中的脚本执行两次
Avoid that script in MasterPage and in Iframe child page is executed twice
我用jQuery开发了一个脚本,每次更改<select>
选择时,都会执行一些逻辑。
最初,我将该脚本添加到MasterPage
中,以确保每个页面都会被考虑 - 但是,我有一些外部页面(aspx
)不使用MasterPage
,因此没有脚本。
为了解决这个问题,我将相同的脚本添加到自定义控件中,该控件呈现为<select>
,并且也存在于这些外部页面中。不幸的是,以这种方式,脚本被执行两次,而不仅仅是一次。
如何更改代码以确保脚本在每个页面中执行,但只执行一次?
用户.
net的ClientScriptManager.RegisterClientScriptInclude,它有一个key参数,所以它只会注册每个key一次。 在母版页和用户控件中,只需确保使用相同的密钥注册它们。
你也可以使用 jquery 来查看它是否已经注册并添加 id:
function requireOnce(url) {
if (!$("script[scr='" + url + "']").length) {
$('head').append("<script type='text/javascript' src='" + url + "'></script>");
}
}
以上是从这里拍摄的
如果您使用的是包含脚本的封装控件,则从Master
中删除原始脚本并在两个页面中使用该控件。除非我错过了什么,否则这就是说:
- 从
MasterPage
中删除原始脚本 - 在
MasterPage
中将自定义控件与脚本配合使用 - 在非主控页面中将自定义控件与脚本一起使用。
我不想让 asp.net 处理我的JavaScript,所以我创建了一个全局变量isPostBack
并将其默认设置为false。当页面进行回发时,我window.isPostBack = true;
添加到页面。现在你的javascript只需要检查全局变量(if(window.isPostBack){...}
)。
相关文章:
- 如果返回的数据是javascript,$.ajax会自动执行脚本吗
- 如果条件匹配,则停止执行脚本
- 加载服务器端渲染的React组件后执行脚本
- 量角器使用ElementArrayFinder执行脚本怪异
- 在selenium python中执行脚本
- 仅当脚本在视口中时执行脚本
- Chrome扩展:加载窗口后执行脚本
- FireFox扩展对TinyMCE编辑器执行脚本注入
- HTML表单-按'时执行脚本;输入',无需提交
- 当超出范围时,延迟执行脚本Jquery(或SetTimeOut)BUT
- 在执行脚本之前,请查看对象是否未定义
- 如何在整个网页加载后执行脚本
- 多次执行脚本的 jQuery
- 从另一个文件执行脚本
- 从单独的.php文件中执行<脚本>
- 如何防止执行脚本但在 DOM 中显示它
- 在 Mac 上的 Firebug 中继续执行脚本的快捷方式是什么?
- 文档.写入脚本内部不执行脚本
- 在页面加载之前在 ajax 请求的页面上执行脚本
- 如何对包含在父 html 中的子 html 文件执行脚本