ExtJs双ActionResult共用同一Js文件ID冲突解决方案
项目使用MVC+ExtJs实现,权限控制是基于Controller下的ActionResult的,有一个页面因参数不同就需要新建两个ActionResult。
不要问我为何是基于页面级,而不是数据级,我只想说这是历史遗留问题。
现在直面我们的问题,两个ActionResult也就是两个页面,共用同一个Js文件,而这个文件又是ExtJs的,众所周知,ExtJs获取Dom是通过Ext.getCmp('‘)来获取,那么,原来唯一的页面Id现在就变的不唯一了,会出现事件调用混乱。
昨天曾想了几年解决办法。
方法1:获取页面路径+Id后缀,生成唯一ID.
实践,此路不通。
代码如下:var url = window.location.href;
获取结果,获取的是ExtJs的框架页路径,而不是当前面路径。
方法2:页面加载时,自动生成类Guid的Id+Id后缀,生成唯一ID。
未作实践,理论上是可行的。
方法3:使用Js后缀传参,如:LogisticsMgr/MatRequireView.aspx.js?MatType=111
我们就获取这个111,然后再+各控件Id后缀,生成唯一ID.
方法实现:
Ext.namespace("JsHelper");
//获得js文件后面的参数 如test.js?user=wuf created by wufei 2013-10-25
JsHelper.GetJsParamValue = function(param) {
var rName = new RegExp("(\\?(.*))?$")
var jss = document.getElementsByTagName('script');
for (var i = 0; i < jss.length; i++) {
var j = jss[i];
if (j.src && j.src.match(rName)) {
var oo = j.src.match(rName)[2];
if (oo && (t = oo.match(/([^&=]+)=([^=&]+)/g))) {
for (var l = 0; l < t.length; l++) {
r = t[l];
var tt = r.match(/([^&=]+)=([^=&]+)/);
if (tt && tt[1] == param) return tt[2];
}
}
}
}
return '';
}
方法调用:var idPre = JsHelper.GetJsParamValue("MatType");
至此问题解决,声明ID和获取ID是都加上这个变量就可以了。
备注:此方案无效,因为Js只加载一次,所以后打开的页面获取的参数不正确。
希望高人指点解决方案。
ExtJs双ActionResult共用同一Js文件ID冲突解决方案的更多相关文章
- js文件命名冲突理解
在一个index.html文件里先后导入a.js和b.js文件a.js文件里写上var s = 2;console.log(s);b.js文件里写上var s = 5;这时a.js和b.js用了相同的 ...
- webpack.config.js文件的高级配置
一.多个入口文件之前我们配置的都是 一个入口 var webpack = require('webpack'); var commonsPlugin = new webpack.optimize.Co ...
- 学习笔记:调用js文件冲突问题解决方案
之前自己动手做了一个小网站,在实现过程中遇到了一个关于js文件调用冲突的问题. 具体问题描述如下:在index.html文件中引用了两个js文件,单独添加banner.js或者focus_pic.js ...
- Extjs学习----------动态载入js文件(减轻浏览器的压力)
动态载入js文件能够减轻浏览器的压力,本例使用了Ext.window.Window组件,该组件的学习地址:http://blog.csdn.net/z1137730824/article/detail ...
- ExtJs 6.0+快速入门,ext-bootstrap.js文件的分析,各版本API下载
ExtJS6.0+快速入门+API下载地址 ExtAPI 下载地址如下,包含各个版本 http://docs.sencha.com/misc/guides/offline_docs.html 1.使用 ...
- ExtJs 6.0+快速入门,ext-bootstrap.js文件的分析,各版本API下载(一)
ExtAPI 下载地址如下,包含各个版本 http://docs.sencha.com/misc/guides/offline_docs.html 1.使用工具HBuilder 2.java 版本 8 ...
- Django_博客项目 引入外部js文件内含模板语法无法正确获取值得说明和处理
问题描述 : 项目中若存在对一段js代码复用多次的时候, 通常将此段代码移动到一个单独的静态文件中在被使用的地方利用 script 标签的 src 属性进行外部调用 但是如果此文件中存在使用 HTML ...
- 前端设计中关于外部js文件加载的速度优化
在一般情况下,许多人都是将<script>写在了<head>标签中,而许多浏览器都是使用单一的线程来加载js文件的,从上往下,从左往右. 若是加载过程出错,那么网页就会阻塞,就 ...
- Extjs 使用fileupload插件上传文件 带进度条显示
一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提 ...
随机推荐
- ueditor使用中的坑
项目中要使用富文本编辑于是采用了百度的开源富文本编辑器 ueditor 官网 http://ueditor.baidu.com/website/ 使用方法就按照官方的来的. 经过使用记录以下要点 ...
- 【iOS】init,loadView,viewDidLoad加载关系
一.loadView 永远不要主动调用这个函数.view controller会在view的property被请求并且当前view值为nil时调用这个函数.如果你手动创建view,你应该重载这个函数. ...
- 转载:传说中的T检验
第二周结束:传说中的T检验 小耿2014-01-21 10:58 本文和上一篇笔记一样:语言十分啰嗦.请大家忍耐…… 以前我不懂统计的时候(现在也不懂),只知道数据出来了要做三件事:1,检验一下数据是 ...
- JS、C# 去除html标签
JS去除html标签 var str = "<span style="display:none;" mce_style="display:none;&qu ...
- C#正则表达式Regex类
C#正则表达式Regex类的使用 C#中为正则表达式的使用提供了非常强大的功能,这就是Regex类.这个包包含于System.Text.RegularExpressions命名空间下面,而这个命名空间 ...
- wget 下载百度云jdk
oracle官网下载需要登录下载 所以从百度云下载 wget -c -O "URL"
- 3.4 spring- lookup-method 子元素的使用与解析
1. lookup-method的应用: 1.1 子元素lookup-method 似乎不是很常用,但是在某些时候他的确是非常有用的属性,通常我们称它为 "获取器注入" . 引用 ...
- window live writer的曲折安装过程
之前一直使用windows live writer2012写日志,由于之前重装了系统,所以需要重新安装writer,本以为是一个很简单的过程,你就是安装个软件吗.... 然而事实是... ...
- hibernateTemplate的load方法
hibernateTemplate的load方法采用延迟加载,所以应当注意. 如果配置不当,采用此方法获取对象,往往会出现异常: javax.servlet.ServletException: org ...
- 团体程序设计天梯赛-练习集L1-010. 比较大小
L1-010. 比较大小 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 杨起帆(浙江大学城市学院) 本题要求将输入的任意3个整数从小 ...