包含与外页javascripts冲突的页面javascripts

时间:2012-03-05 08:17:39

标签: java javascript jsp

我的问题有点难以解释,但我会尝试。 我有2个jsp页面Outer.jsp和Inner.jsp

Outer.jsp

脚本:src =“tabs.js”

var PageTabs =“Tab1”

@include“Inner.jsp”

Inner.jsp

脚本:src =“tabs.js”

var PageTabs =“Tab2~Tab3~Tab4”

两个jsp页面都使用相同的tabs.js来呈现页面上的一些选项卡元素。 “PageTabs”变量是tabs.js使用的众多常见变量之一。那么渲染时会有什么好处,即使在渲染Outer.jsp的标签时,tabs.js也会采用最新的“PageTabs”变量,即PageTabs =“Tab2~Tab3~Tab4”。

注意:页面变量和tabs.js是从客户端收到的标准元素的一部分。因此必须使用它们来为应用程序提供相同的外观和感觉。 我需要的是一种隔离“Inner.jsp”访问“Outer.jsp”脚本的方法。这将防止制表符元素与要使用的变量混淆。

我希望我有点清楚。如果我需要提供更多说明,请告诉我。感谢。

2 个答案:

答案 0 :(得分:0)

JavaScript在页面内从上到下解释,因此您的第二个PageTabs值会覆盖第一个值。一种选择是为变量使用不同的名称(并参数化tabs.js函数,而不是依赖于全局变量。)

答案 1 :(得分:0)

使用jsp include时,一项非常有用的技巧就是使你的.js代码模块化。这也是封装代码和避免冲突的重要方法。

tab.js:

var tabModule = (function(my){
   var model;
   return {
      setModel: function(model){/*....*/}
      //other api functions
   }
})(tabModoule||{});

Outer.jsp:

tabModule.setModel({PageTabs : "Tab1"});

Innder.jsp:

 tabModule.setModel({PageTabs : "Tab2~Tab3~Tab4"});