2012-12-11 13 views
16

Zasadniczo co chcę zrobić, to coś do skutku to:Czy istnieje sposób na oddzwanianie na żądanie po zmianie window.location.href?

window.location.href = "some_location"; 
window.onload = function() { 
    alert("I'm the new location and I'm loaded!"); 
}; 

Czy istnieje jakiś sposób, aby mieć wywołania zwrotnego, gdy okno jest nowa lokalizacja jest ładowany? (Powyższy kod nie działa.)

+1

Zmiana 'location.href' powoduje zamknięcie bieżącej strony i otwarcie nowej strony, więc żadne zdarzenie na starej stronie nie może zostać wyzwolone po załadowaniu nowej strony. – qwertymk

Odpowiedz

15

Nie, nie możesz zrobić tego tak, jak chcesz. Ładowanie nowej strony zamyka bieżący dokument i rozpoczyna ładowanie nowego dokumentu. Jakikolwiek kod w bieżącym dokumencie nie będzie już aktywny po rozpoczęciu ładowania nowej strony.

Aby mieć procedurę obsługi zdarzeń po załadowaniu nowego dokumentu, należy wstawić kod do dokumentu nowej strony lub załadować nowy dokument do elementu iframe i monitorować ładowanie elementu iframe z bieżącego dokumentu.

+1

Co się stanie, jeśli okno jest nowym oknem: var w = window.open (""); w.location.href = "some_location"; w.onload = function() {alert ("Hi!");}; Załóżmy, że istnieje prawdziwy powód, że muszę użyć przekierowania zamiast otwierać bezpośrednio na adres URL, tak jak potrzebuję przekierować na odpowiedź na żądanie lub coś podobnego. Czy jest jakiś sposób? – Lukas

+2

@Lukas - jeśli otwierasz nowe okno (to samo z ramkami), istnieją ograniczenia bezpieczeństwa, jeśli okna znajdują się w różnych domenach i nie możesz ustawić programów obsługi zdarzeń w tym oknie. Jeśli twoje okna znajdują się w tej samej domenie, powinieneś być w stanie ustawić dla niego obsługę onload. – jfriend00

+0

Hmmm ... Sprawdź http://jsfiddle.net/42hKC/ - Otwieram nowe okno w tej samej domenie, załączając onload do nowego okna i nigdy nie wystrzeliwuję. – Lukas

2

Ustawienie window.location.href na nową wartość mówi przeglądarce, aby po prostu przejść do następnej strony.

tak:

window.location.href = "http://www.google.com/"; 

Gdy przeglądarka przechodzi do google.com, to jest to, JavaScript nie jest już wykonywany, i nie ma sposobu, aby mieć jakikolwiek zwrotnego, ponieważ w przeglądarce nie wyświetla już Twojej strony.

Odpowiedź brzmi: nie.

+0

Źle. Mój JavaScript nadal działa - w oryginalnym oknie, które kontroluje zaktualizowane okno. – 7vujy0f0hy

Powiązane problemy