2012-03-05 3 views
0

Моя проблема немного трудно объяснить, но я попробую. У меня 2 страниц JSP Outer.jsp и Inner.jspВключить страницы javascripts, конфликтующие с внешней страницей javascripts

Outer.jsp

Сценарий: SRC = "tabs.js"

вар PageTabs = "Tab1"

@ включают "Inner.jsp"

Inner.jsp

Сценарий: SRC = "tabs.js"

вар PageTabs = "Таб2 ~ TAB3 ~ tab4"

Оба СПЯ страницы используют одни и те же tabs.js, чтобы сделать некоторые вкладки элементов на странице. Переменная «PageTabs» является одной из многих распространенных переменных, которые используются tabs.js. Итак, что происходит во время рендеринга, tabs.js берет последнюю переменную «PageTabs» i'e var PageTabs = «Tab2 ~ Tab3 ~ Tab4» даже во время показа объявлений Outer.jsp.

Примечание: Переменные страницы и tabs.js являются частью стандартных элементов, полученных от клиента. Поэтому они должны использоваться, чтобы придать такой же внешний вид приложению. Что мне нужно - это способ изолировать «Inner.jsp» от доступа к сценариям «Outer.jsp». Это предотвратит путание элементов табуляции над используемыми переменными.

Надеюсь, я несколько ясен. Пожалуйста, дайте мне знать, если мне нужно предоставить дополнительные разъяснения. Благодарю.

ответ

0

JavaScript интерпретируется сверху вниз внутри страницы, поэтому ваше второе значение PageTabs переопределяет первое. Один из вариантов - использовать другое имя для переменной (и параметризовать функции tabs.js, а не полагаться на глобальные vars.)

+0

Да, я понимаю. К сожалению, на экране есть много общих элементов. Я знаю, что это плохой дизайн, но мне придется жить с этим. Есть ли для внутренней страницы изолирование от внешнего? Или еще мне придется переписать tabs.js полностью –

+0

Как я уже сказал, нет внутренней страницы нашего контекста «внешней страницы» для JavaScript, пока он работает на той же странице. Один из вариантов, который вы можете реализовать, - это превратить внутреннюю страницу в '