论坛首页 Web前端技术论坛

第一次遇到javascript多实例冲突问题,提供部分解决方案

浏览 10792 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-11-15  
可执行 写道
clue 写道
可执行 写道
hu437 写道
namecepace,在门户(portal)如果是使用的portlet,则每一个portlet会有一个namespace,如果同一个portlet在页面中出现多次,这个namespace也要生成不一样的


你认真看,每个portlet的确是后台语言给了唯一的id啊,但是相同的代码如何拿到各自对应的id呢?你试着写代码来拿就发现很难做到了。。

很难吗?我觉得你们先要处理的是JS代码的组件化,比如:

<script src="widget组件JS"></script>

<!--组件1-->
<div id="a1"></div>
<script>
new widget({ id : "a1" });
</script>

<!--组件2-->
<div id="a2"></div>
<script>
new widget({ id : "a2" });
</script>


你那两段代码并不是相同的,其中“a1”和“a2”不同。

这里的js是不知道有a1、a2存在的,除除非你有什么方法写代码自动拿到“a1”和“a2”


你这个 id 的命名有没有什么规律?如果有规律的话,可以通过遍历 DOM 节点来获取其 id 的值。而且所有你需要的都会获取到。
0 请登录后投票
   发表时间:2011-11-16  
可执行 写道
最近在为公司开发一个通用的门户发布平台,项目做了一大半了,突然遇到javascript多实例冲突问题,蛋都碎了!!


如果你的那段“这里需要一行javascript代码”是立即执行的,生成“<div id="X">”的同时,多生成一段js设置一个全局变量如thisId,如:
<div id="1"><script>var thisId=1</script>。。。<script>alert(thisId)</script></div>

如果那段js代码不是立即执行的,而是等待整个页面加载完再执行的,就更好办了,直接遍历这些div执行即可。
如果说都是attach的事件方法,为了避免执行多次,可以执行完一次就给div设个属性啥的,后面判断一下即可。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics