Несколько элементов управления на странице с несколькими экземплярами JavaScript

StackOverflow https://stackoverflow.com/questions/2807074

Вопрос

Я создал веб-контроль в ASP для использования в интеграции с CitalIgent Communitserver. Контроль записан в ASP с некоторыми 10 линиями C # # Backend для управления видимостью элементов пользовательского интерфейса на основе разрешений, но я бы сказал, что 90% функциональности является прямой JavaScript.

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

Как я могу взять эту функцию, которую у меня есть, это 1200 строк JavaScript и сделайте его так, чтобы каждый экземпляр элемента управления может ссылаться на каждый уникальный экземпляр JavaScript?

Это было полезно?

Решение

Если проблема просто выясна, какая HTML-элемент вызвала событие, то это легко - это передано вам в аргументы мероприятия. (Вы можете получить его родительский элемент, конечно.) Итак, если я правильно понимаю проблему, у вас есть функции JavaScript, ссылается на некоторые элементы управления, которые дублируются?

Я не думаю, что здесь есть какое-то магическое решение: вам просто нужно сделать удостоверение личности уникальными. Если вы не используете элементы управления на стороне сервера (которые обрабатывают это для вас автоматически), то вы можете использовать некоторые сгенерированные серверные сгенерированные префикс или суффикс, например.

<input id="<%= ParentControlId %>_mytextbox" type="text" />

куда ParentControlId является уникальным идентификатором родительского контроля (вы можете просто использовать Control.id, если вы не возражаете против длинных идентификаторов).

Конечно, вы должны попытаться повторно использовать свои функции JavaScript, а не дублировать их для каждого экземпляра управления. Если вы используете сгенерированный сервером ID подход, вы должны пройти все идентификаторы вокруг. Если вы используете подход префикса, вы можете просто пройти через префикс.

Другие советы

Как ваше управление получила JavaScript на страницу, затем? Впрыскивая его напрямую? Вы используете Scriptreference? Браузер загрузит только JS после того, как оба элемента управления ссылаются, что же JS (тот же URL).

Кроме того, ваши JS написаны с точки зрения любого старого экземпляра? Например, у вас есть функция, как нагрузка (Ocontrolname) или функция нагрузки () имеет жесткое имя экземпляра в нем?

ИМО, пытаясь получить несколько «Javascripts» - это не путь вперед - рефакторинг вашего кода может получить ваш ответ быстрее.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top