Перезапись клиентского скрипта

#javascript #client

#javascript #клиент

Вопрос:

У меня есть 2 пользовательских элемента управления, размещенных на веб-странице, в событии user_control_load я добавляю некоторый скрипт на стороне клиента.

итак, когда запускается загрузка страницы user control 1, он добавляет скрипт. когда вызывается функция загрузки страницы 2, она снова записывает скрипт с тем же ключом, но в исходном виде страницы я вижу скрипт, добавленный пользовательским элементом управления 1. я ожидал, что пользовательский элемент управления 2 должен перезаписать скрипт, потому что ключ тот же, но его не происходит, есть идеи, как я могу перезаписать скрипт тем же ключом.

Ответ №1:

Согласно MSDN, сценарий запуска однозначно идентифицируется по его ключу и типу. Скрипты с одинаковым ключом и типом считаются дубликатами. На странице может быть зарегистрирован только один скрипт с заданным типом и парой ключей. Попытка зарегистрировать скрипт, который уже зарегистрирован, не создает дубликат скрипта.

 Me.Page.ClientScript.RegisterStartupScript(Me.GetType, "aa", "alert('first');", True)
Me.Page.ClientScript.RegisterStartupScript(Me.GetType, "aa", "alert('second');", True)
  

В приведенном выше примере кода будет зарегистрирован только первый скрипт, второй — нет. Для получения более подробной информации, пожалуйста, следуйте документации.

Ответ №2:

Я думаю, что перезаписать скрипт, добавленный с тем же ключом, невозможно. Поскольку оба пользовательских элемента управления используются на одной странице, какой смысл добавлять скрипт при одной загрузке элемента управления, а затем снова переписывать при второй загрузке элемента управления. Вместо этого просто добавьте скрипт во вторую управляющую загрузку.