单页面网站关于id冲突的解决办法

news/2024/5/9 6:06:54/文章来源:https://blog.csdn.net/weixin_30242907/article/details/96317845

最近做了一个单页面的网站,所有的页面加载都是通过局部刷新的方式,并且不用iframe,并且我们引入了动态tab页签:

 

所有的页签里的内容都只是一个元素,都在同一个html页面上,没有任何iframe分割,这样遇到了一个非常突出的问题——页面复用。

 

页面复用会遇到什么问题?

假设在A标签页和B标签页用的是同一个jsp,就像上图的两个【字典编辑】页签,里面的内容用的是同一个jsp,那么这个jsp里面的js方法名、js变量名、页面元素id都会冲突。

冲突带来一些列问题,给表单绑定方法的时候不知道实际是给哪个表单绑定的方法,表单提交完后刷新的不知道是哪个div,刷新的是哪个树等等等等。

 

通过一番尝试和折磨找到了以下几个解决办法(如果再给我个机会重做的话,我一定会放弃动态多标签):

1、每打开一个tab签都会在后台生成一个不会重复字符串【idPrefix】放在session里,例如(_33ae9d282966409b9c9c041fb93aa596_),然后在变量和id命名时通过el表达式将idPrefix作为他们的前缀,如下:

//js变量命名
var ${idPrefix}sysDictTree;//树对象;
var ${idPrefix}selectDictNode;//js方法变量命名
function ${idPrefix}reloadDictNodes(){}//dom元素id命名
<div class="col-md-9" id="${idPrefix}dictItemNodeDetail"></div>

因为是jsp所以可以在前面加个${idPrefix},姑且不考虑这个工作量和开发复杂度,如果每一个tab页签中的内容都是一次性打开的,那么这样做已经可以解决。

但是,像上图这样的左边一个树右边一个表单的情况,这就会引发一个问题:

我先打开了A的字典编辑,这个时候idPrefix假设是A1,然后我再打开B的字典编辑,idPrefix已然被换掉了,假设变成了B1,

此时我回头来操作A的树,点击了某个叶子节点,右边加载了一个表单AForm,

然后操作B的树,点击某个叶子节点右边加载了一个BForm,

AForm和BForm用的是同一个jsp,那么此时AForm和BForm里的${idPrefix}是一样的,带来的结果是他们仍然会产生冲突,这个时候怎么办?

对于这种同一个tab签上的内容,不是一次性加载的,我又做了这样一个改进:

 

2、虽然AForm和BForm的id、js变量、js方法名是一毛一样的,但是他们位于不同的tab签中,并且我们的tab签有一个特点,某一个时刻只有一个tab签是激活(active)的,

那么我们在js里面为Form本身或者Form里的某个id的元素绑定事件或者直接操作他们的时候,我们可以获取当前激活的tab签中的某个元素,因为我们只有打开(激活)某个页签才能操作里面的东西,所以在这里【当前】和【现在被激活的】tab签是同一个。用代码来表示就是:

 Addtabs.getCurrentTabElementById("${idPrefix}dictNodeForm").validate({rules: {TEXT: {required: true},VALUE: {required: true},IS_USE: {required: true},SEQ: {required: true,digits: true}}
);

其中的

Addtabs.getCurrentTabElementById

就代表获取当前激活的。

 

这个时候第三个问题也来了,如果我想提交完这个表单,然后去刷新当前tab签上的树,我怎么知道那个树的id是什么,或者如果那个树已经放在某个变量里了我怎么知道那个变量的变量名?

 

3、我的做法是在我们加载某个tab页签的时候,把idPrefix存放在tab签的内容div的属性当中,因为树和div是一起加载的,所以这个属性里的idPrefix和树的肯定一致,我只需要在js中获取当前tab签的内容div里的该属性即可,然后:

eval("pnode="+tabIdPrefix+"sysDictTree.getNodeByParam('id',pid)");

通过eval来执行拼接的js即可。

 

暂且就这三个措施,非常复杂,其它问题遇到再解决吧。。




 

转载于:https://www.cnblogs.com/flying607/p/6208380.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_771436.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始搭建WordPress个人网站

imageimageimageimageimageimage文字版 查看下一篇推送 设置轻量应用服务器 •初始化轻量应用服务器&#xff0c; 设置登录密码 比如iamzhaoolee•将域名 hk.v2fy.com 解析到 轻量应用服务器的ip•确认开启轻量应用服务器的80端口&#xff0c;63306端口&#xff0c;待会儿要用…

视频版:从零开始搭建WordPress个人网站

QQ音乐的版权多&#xff0c;网易云音乐的评论很棒&#xff0c;能不能两个都要呢&#xff1f;答案是可以&#xff01; ​把QQ音乐的歌曲放到网易云去听&#xff0c;需要走三步 第一步&#xff1a;下载QQ音乐的歌曲到本地 image•找到下载到本地的歌曲 image第二步&#xff1a;…

512MB内存VPS服务器安装宝塔WEB客户端建站 - 环境部署篇

原本以为我们很多网友用VPS搭建网站不会用WEB面板&#xff0c;而采用一键包或者自己部署编译环境&#xff0c;但是最后发现其实目前我们使用WEB面板的还是挺多的&#xff0c;无论是免费还是付费的都有不少人使用。比如当初一直免费的AMH面板&#xff0c;如今收费服务后还是有很…

外贸电子商务网站之Prestashop修改顶部导航

如修改以上所示顶部导航。 如何在prestashop顶部导航栏添加链接&#xff0c;Module>Top horizontal menu点击进入Configure页面 1&#xff0c;在Settings 中看到 链接 选中&#xff0c;下方有个add>> 点击后保存&#xff0c;前台就可以看到导航里已经显出来了 删除就是…

《个人网站篇》WordPress与Hexo建站如何选型?

如何获取Hexo和WordPress? Hexo Hexo是一个基于Node.js的建站工具&#xff0c;可以用来生成静态网站&#xff0c;Hexo配套的最棒主题为Next&#xff0c;Next主题使用效果实例 https://zhaoolee.com/GBlog/ Next主题下载地址&#xff1a;https://github.com/next-theme/hexo-th…

总所周知,Github是一个读小说的网站!《Re0:从零开始的异世界生活》Web版

最近我在B站追了番剧《Re0&#xff1a;从零开始的异世界生活》&#xff0c;剧情紧张刺激&#xff0c;各种奇妙人物登场&#xff0c;主角命运跌宕起伏&#xff0c;甚至反复去世&#xff0c;好在主角有无限复活币&#xff0c;不然最多拍3集就会全剧终。 我把Re0推荐给哥们 imagei…

《RSSHub Radar》可以帮助你快速发现和订阅当前网站RSS的浏览器扩展

极客们手头有很多好玩的网站&#xff0c;但每天挨个打开网站去看内容又很麻烦&#xff0c;于是极客们便会使用RSS订阅网站内容更新。 查看当前网站的RSS订阅地址最简单的方法&#xff0c;是直接查看源代码, 网页会在 HTML 头部包含 type 为 application/atomxml 或 application…

Chrome插件英雄榜第99篇更新!《Get Favicon》一键获取网站的超清图标,Favicon将成为你PPT的加分项...

打开Chrome浏览器&#xff0c;会有一个私人定制化的网址导航&#xff0c;这些网址的图标就是网站的Favicon&#xff0c;如果我们想要快速下载这些Favicon图标的高清版&#xff0c;可以用《Get Favicon》这款Chrome扩展工具轻易实现&#xff5e; Favicon《Get Favicon》使用方法…

Chrome插件英雄榜107篇更新,保护你的上网浏览记录隐私《I don't care about cookies》屏蔽所有网站询问Cookies授权的弹窗...

《I dont care about cookies》是一款屏蔽所有网站询问Cookies授权询问弹窗的小工具。 使用方法 《I dont care about cookies》使用方法极其简单&#xff0c;安装后启用就可以自动拦截询问cookies权限的弹窗 I dont care about cookies《I dont care about cookies》 下载链接…

将BBS网站Discourse从海外主机完美迁移到国内云服务器, 国内主机同时运行WordPress和Discourse服务...

我前两天把 Discourse这个论坛服务部署到了一个轻量云服务器上, 详情 给热心老哥搭个窝&#xff0c;2021年30分钟用Discourse搭建新一代BBS论坛站全攻略 海外的云服务在国内访问很慢, 于是我开始了将Discourse往国内云迁移的探索. 遇到的问题 Discourse依赖包极多, 官方推荐Doc…

《树莓派4B家庭服务器搭建指南》第十一期:个人博客最佳解决方案,在树莓派搭建WordPress网站,并开放到公网...

在本系列第九期《树莓派4B家庭服务器搭建指南》第九期&#xff1a;用树莓派低成本给热心老哥搭个窝&#xff0c;在树莓派建立BBS论坛flarum并映射到公网全攻略 https://www.v2fy.com/p/2021-11-26-flarum-1637921368000/ 中&#xff0c;我们完成了PHP环境的搭建&#xff0c;数据…

沙盒单机网站代表-Steam【推荐】

Steam平台是Valve公司聘请BitTorrent(BT下载)发明者布拉姆科恩亲自开发设计的游戏平台。Steam平台目前是一款全球最大的综合性数字发行平台。玩家可以在该平台购买、下载、讨论、上传和分享游戏和软件。?&#xff0c;没有十足的抵抗力和小康的生活水平千万别触碰Steam&#xf…

GET 新技能!自己的网站突然就不香了

松哥自己的网站有两大类&#xff1a; 一个就是大家看到的 www.javaboy.org&#xff0c;这个网站是基于 GitHub Pages 做的&#xff0c;使用的技术栈是 hexoicarus&#xff0c;公众号上的所有文章我都会同步到这个网站上去。 还有一类就是电子书网站&#xff0c;这个就比较多了…

学习笔记网站之在ASP和PHP语言及数据库选择上的3个要点[图文]

学习笔记网站之在ASP和PHP语言及数据库选择上的3个要点[图文]去年12月份&#xff0c;我开始着手建立一个学习类的博客网站&#xff0c;由于博客站点我以前就接触过&#xff0c;因此在网站建设方面还是有些心得的&#xff0c;不过让我有些拿不定注意的是&#xff1a;如何选择系统…

数据库操作对比:Sql Server与MYSQL相比有哪些建站优势?

最近一直在做博客网站&#xff0c;从定位主题到程序和数据库的选择&#xff0c;确实废了不少心思&#xff0c;经过细致的思考&#xff0c;最终将主题定位为读书方面&#xff0c;还有文学和学习笔记&#xff0c;但是对于程序和数据库问题&#xff0c;我一直就比较费心&#xff0…

读书博客网站靠打赏插件营收的方案是否具备技术可行性[图]

今年&#xff0c;我开始着手读书博客的研究&#xff0c;一直以来&#xff0c;都想写一个关于读书主题的博客网站&#xff0c;本人对于教育行业还是非常喜欢的&#xff0c;古诗词、古典文学、IT技术学习&#xff0c;都感兴趣。但是作为一个技术小白&#xff0c;只能从头学习了&a…

网站建设思考之好六网的原创数据成长之路[图]

最近也在学着写博客&#xff0c;因为我开始学习编程等相关知识了&#xff0c;因此比较关注网站建设这一块&#xff0c;也就对一些优秀的新网站有些思考了&#xff0c;这段时间在网站看帖子&#xff0c;突然发现了一个增长很快的新站&#xff0c;它就是好六网&#xff0c;这个网…

Z-Blog2.3Avengers测试完善后将带来博客网站的革命性突破[图]

最近打开博客网站后台的时候&#xff0c;发现提示系统版本有更新&#xff0c;ZBLOG官网一看发现更新了Z-Blog2.3Avengers版本&#xff0c;这是一个ASP程序脚本语言编写的博客系统&#xff0c;而我正是使用了这套系统&#xff0c;主要是在于其易用性&#xff0c;而zblog asp又可…

熊掌号是什么及对小网站真的有保护作用吗?

2017年下半年&#xff0c;科技界发起了改革&#xff0c;而尤其以百度最为显眼&#xff0c;百度说&#xff1a;我们要打造原创生态&#xff0c;要对原创数据进行保护&#xff0c;将流量导出给优质熊掌号&#xff0c;而怎么才能做出优质的熊掌号呢&#xff1f;那就是必须要做原创…

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始&#xff0c;我在写博客了&#xff0c;因为我觉得业余写写博客也还是很不错的&#xff0c;但是从2017年下半年开始&#xff0c;百度已经推出了原创保护功能和熊掌号平台&#xff0c;为此&#xff0c;我也提交了不少以前的老数据&#xff0c;而这些历史数据对于…