Я разрабатываю пользовательский элемент управления в ASP.NET 3.5, который использует встроенные ресурсы CSS и JavaScript.Элемент управления работает нормально, но когда он размещен внутри UpdatePanel, возникает проблема синхронизации, когда некоторый JavaScript выполняется до загрузки и применения встроенного файла CSS.JavaScript зависит от свойств в CSS для правильной работы.Я могу получить все, что мне нужно, чтобы правильно отображаться в теге <head>
, но я не могу решить проблему с синхронизацией, если не отобразить элемент <style>
внутри элемента UpdatePanel и выгрузить в него содержимое файла CSS, заставив его выполнить командузагрузить своевременно.Вот основная идея того, что я пробовал, прежде чем прибегнуть к этому.Поскольку при использовании AJAX нельзя просто добавить ссылку CSS в коллекцию элементов управления заголовка на стороне сервера, предпочтительным способом является регистрация сценария для вставки его в заголовок на стороне клиента.В теге <head>
я получу:
<script type="text/javascript" src="/WebResource.axd?d=yvr2-IBhAQRL9mkn-eB25Q2&t=633962690150696688"></script><!-- Custom control functions -->
<script type="text/javascript">//one-line script that inserts CSS link in head</script>
<link rel="stylesheet" type="text/css" href="/WebResource.axd?d=AP8xhKnwsJ9gvRD_ilG0I8ZV2eFcjUevPkzvdMOyuEJttsxE300BabUFg8bCLsiP0&t=634404581860000000" /><!-- the CSS that got loaded by the line above -->
<script type="text/javascript">//one-line script to call a setup function that depends on the CSS file above being loaded and applied already, which it is not</script>
Я знаю, что это проблема с синхронизацией, потому что, если я прохожу через нее в firebug или использую предупреждение или что-то еще, чтобы отложить выполнение JavaScript, тогдаэто работает отлично.Мне не очень интересно использовать такую библиотеку, как LazyLoad.Мне кажется, что если мне нужно использовать такую библиотеку, чтобы сделать что-то столь же простое, как загрузить файл CSS, то я делаю что-то не так.Я также не заинтересован в решениях не UpdatePanel.Сейчас я женат на этом, и мне просто интересно, есть ли надежный способ сделать это с помощью инструментов, которые я использую.