Czy istnieje sposób określenia, czy dana funkcja jest wywoływana w wyniku zdarzenia rodzimej przeglądarki?określić, czy funkcja wywołana w wyniku zdarzenia przeglądarki macierzystej
W nowoczesnych przeglądarkach, jeśli wywołasz funkcję window.open(...)
z łańcucha zasięgu, który powstał za pomocą obsługi kliknięcia, strona otworzy się bez problemu.
Jeśli jednak spróbujesz wywołać to bezpośrednio, przeglądarka wygeneruje wyskakujące ostrzeżenie.
Przeglądarka śledzi kontekst wykonania i w jakiś sposób zaznacza go, aby pierwsze użycie funkcji powiodło się. Bez obecności tej flagi blokuje ona drugie użycie.
Czy istnieje sposób, aby uzyskać dostęp do tej flagi, aby wewnętrznie zablokować wykonywanie niektórych funkcji, jeśli są one wywoływane bezpośrednio w porównaniu do rzeczywistego zdarzenia przeglądarki macierzystej.
Przyjrzałem się obiektowi zdarzenia, które otrzymują moje funkcje, ale nie widzę niczego, co różni się rzeczywistym rodzimym wydarzeniem od zdarzenia generowanego przez ręczne wywołanie zdarzenia.
Czy to, czego chcę, jest możliwe?
Domyślam się, że najlepsze, co można uzyskać, to przekazanie obiektu zdarzenia jako argumentu. Ale potem znowu * możesz * generować obiekty zdarzeń i nie ma możliwości odróżnienia prawdziwych zdarzeń od wygenerowanych. – MaxArt