Jak używasz ASP.NET, warto zrobić wyboru po stronie serwera, jak to będzie gdzie możesz dodać odniesienie do pliku javascript. Z pliku .ascx można zarejestrować się, co następuje:
this.Page.ClientScript.RegisterClientScriptInclude("GlobalUnqiueKey", UrlOfJavascriptFile);
... ze swojej strony po prostu zadzwonić przedmiotem clientScript bezpośrednio:
ClientScript.RegisterClientScriptInclude("GlobalUnqiueKey", UrlOfJavascriptFile);
do „GlobalUniqueKey” może być dowolny ciąg znaków (I użyj również adresu URL pliku javascript)
Jeśli spróbujesz zarejestrować skrypt z tym samym ciągiem znaków, to nic nie zrobi. Więc jeśli zadzwonisz na tę stronę, kontrolę lub gdziekolwiek indziej, otrzymasz tylko jedno odniesienie na twojej stronie. Zaletą tego jest to, że możesz mieć wiele instancji kontrolki na stronie i mimo, że wszystkie starają się zarejestrować ten sam skrypt, jest to robione maksymalnie jednorazowo. I żaden z nich nie musi się martwić, że skrypt jest już zarejestrowany.
Istnieje metoda "IsClientScriptIncludeRegistered (stringkey)", której można użyć do sprawdzenia, czy skrypt został już zawarty w tym kluczu, ale wydaje się dość niepotrzebny, aby wykonać to sprawdzenie przed rejestracją, ponieważ wielokrotne próby rejestracji nie powodują wyjątków lub spowodować inne błędy.
Wykonanie sprawdzania po stronie klienta oznacza, że zakładając, że wiele odwołań do javascript jest buforowanych przez przeglądarkę (mogą one nie być), nadal masz wiele znaczników, a nadmiar każdego z nich powoduje uruchomienie javascriptu. Jeśli masz 20 instancji kontroli na stronie, możesz napotkać poważne problemy.
Czy istnieje powód, dlaczego nie można po prostu zawierać javascript biblioteki we wszystkich stronach – jfar
jfar mam witryn, które tylko kiedykolwiek potrzebny plik javaScript w? na jednej konkretnej stronie, gdy pokazuję konkretną kontrolę, w większości przypadków ta kontrola nie będzie w ogóle używana na tej stronie. Byłoby nieekonomiczne, aby dołączyć javascript do każdego użytkownika, który odwiedził każdą stronę w witrynie, szczególnie jeśli ich brat Wser nalegał na żądanie pliku na każde żądanie. –
Powodem, dla którego nie chcę uwzględniać go na wszystkich stronach, jest wydajność: nie potrzebuję go we wszystkich. Neil, dzięki za wyjaśnienie. – Shimmy