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

В Django 1.9 есть новый поиск полей __date, который вы можете использовать:

Entry.objects.filter (pub_date__date = datetime.date (2005, 1, 1)) Entry.objects.filter (pub_date__date__gt = datetime.date (2005, 1, 1))

Queryset API

13
задан Jon Schneider 8 August 2018 в 18:35
поделиться

3 ответа

Поскольку вы используете asp.net, имеет смысл выполнить проверку на стороне сервера, поскольку именно там вы решите добавить ссылку на файл javascript. В вашем файле .ascx вы можете зарегистрироваться следующим образом:

this.Page.ClientScript.RegisterClientScriptInclude("GlobalUnqiueKey", UrlOfJavascriptFile);

... со своей страницы вы просто вызываете объект ClientScript напрямую:

ClientScript.RegisterClientScriptInclude("GlobalUnqiueKey", UrlOfJavascriptFile);

'GlobalUniqueKey' может быть любой строкой (я использую URL-адрес файла javascript для это тоже)

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

Существует метод IsClientScriptIncludeRegistered (stringkey), который вы можете использовать, чтобы узнать, был ли скрипт уже включен под этот ключ, но это кажется довольно избыточным. эта проверка перед регистрацией, поскольку несколько попыток регистрации не вызывают исключений или других ошибок.

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

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

Выполнение проверки клиента -side означает, что, предполагая, что несколько ссылок javascript кешируются браузером (они могут не быть), у вас все еще есть несколько тегов и заголовок каждого из них, вызывающий запуск некоторого javascript. Если бы у вас было 20 экземпляров вашего элемента управления на странице, у вас могли бы возникнуть серьезные проблемы.

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

Выполнение проверки клиента -side означает, что, предполагая, что несколько ссылок javascript кешируются браузером (они могут не быть), у вас все еще есть несколько тегов и заголовок каждого из них, вызывающий запуск некоторого javascript. Если бы у вас было 20 экземпляров вашего элемента управления на странице, у вас могли бы возникнуть серьезные проблемы.

у вас все еще есть несколько тегов и заголовок каждого из них, вызывающий запуск некоторого javascript. Если бы у вас было 20 экземпляров вашего элемента управления на странице, у вас могли бы возникнуть серьезные проблемы.

у вас все еще есть несколько тегов и заголовок каждого из них, вызывающий запуск некоторого javascript. Если бы у вас было 20 экземпляров вашего элемента управления на странице, у вас могли бы возникнуть серьезные проблемы.

12
ответ дан 1 December 2019 в 23:48
поделиться

На стороне клиента можно сделать одно из двух ...

  1. Проверить dom на наличие тега скрипта, соответствующего файлу javascript, который вы хотите проверить
  2. Проверить переменную или функцию, которую вы знать, есть / будет определено в файле javascript для undefined.

Вот быстрая функция JS, которая использует JQuery для выполнения того, что вам нужно:

function requireOnce(url) {    
    if (!$("script[src='" + url + "']").length) {
        $('head').append("<script type='text/javascript' src='" + url + "'></script>"); 
    }
}
6
ответ дан 1 December 2019 в 23:48
поделиться

используйте что-то вроде следующего:

if(typeof myObjectOrFunctionDecalredInThisScript != 'undefined') {
  // code goes here
  var myObjectOrFunctionDecalredInThisScript = { };
}

Это проверяет, существует ли ваш объект или функция уже, и таким образом предотвращает повторное объявление.

0
ответ дан 1 December 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: