Obecnie pracuję nad starszą stroną internetową, która używa mnóstwa JavaScript, jQuery, JavaScript klienta Microsoft i innych bibliotek. Podsumowując - nie mogę przepisać całej strony od nowa, ponieważ firma nie może tego uzasadnić. Więc ... tak właśnie jest. W każdym razie muszę zanieczyścić (naprawdę nie próbowałem) globalną przestrzeń nazw zmienną. Są trzy opcje, o których myślałem -
Po prostu zapisz / pobierz go za pomocą zwykłej deklaracji JavaScript -
var x = 0;
Użyj jQuery do przechowywania / pobierania wartości w tagu DOM -
$("body").data("x", 0);
Użyj ukrytego pola formularza i ustaw / pobierz wartość za pomocą jQuery -
$("whatever").data("x", 0);
Czy jest lepszy sposób? Przyjrzałem się istniejącemu stosowi kodu i nie wierzę, że zmienna może być objęta zakresem funkcji.
źródło
Dla mnie najlepszym sposobem na poradzenie sobie z tą sytuacją jest zdefiniowanie obiektu w obiekcie window:
window.my_config = { my_var1 : 1, my_var1 : 2, my_var1 : 3 };
Dzięki temu luneta będzie schludna i czysta. A ilekroć miałbyś uzyskać dostęp do globalnego, używając
window.my_config
każdego, kto patrzy na kod, wiedziałby, że uzyskiwany jest dostęp do globalnego.źródło
Możesz utworzyć skrót w zasięgu globalnym i używać go jako przestrzeni nazw:
MyNamepace={} MyNamespace.newvar = 'value' // MyNamespace.newvar => 'value'
źródło
Dzieląc się z wami swoją praktyką, zrobiłbym globalny obiekt / zmienną w wymaganym pliku JavaScript z rozsądnym prefiksem, tak jakbym pracował na stronie, na której ten obiekt będzie polem tekstowym, to nazwałbym go:
g_TxtMyValue = 'value'; // g_ specifies it to be a global variable, it is one // of the many conventions used
Jeśli masz więcej niż jedną zmienną globalną, możesz również mieć przestrzeń nazw, taką jak:
my_txt = {}; // For a real site I would use a prefix relative to the project // name instead of "my". my_txt.testValueOne = 'Value one'; my_txt.testValueOne = 'Value two';
Te zmienne będą dostępne w całej witrynie po ich zainicjowaniu.
Mam nadzieję, że to pomoże.
źródło
Użyj podkreślenia
isEmpty()
._.isEmpty('')
powrócitrue
.źródło
Krótka informacja:
Czy fancybox wykonuje AJAX (co oznacza: jeśli ładuje się w ramach iFrame, należy dodać „parent” do metody close), na przykład:
źródło