2010-02-27 41 views
8

Mam funkcję javascript, która używa window.location. Działa dobrze w przeglądarkach Firefox i Internet Explorer, ale nie w Chrome. Testowałem to zarówno na Ubunutu Hardy, jak i na Windows Vista. Jaki jest podstawowy problem i jak go obejść?window.location nie działa w przeglądarce Chrome

+8

To pomaga jeśli pokazał nam javascript functuon używasz ... :) – Rob

+4

-1 - prosić o pomoc z funkcją i oczekują nam zgadywać? potrzebuje pomocy? pokaż kod. +1 @Rob –

+3

I nie zaszkodzi, jeśli będę poprawnie ćwiczył "funkcję" pisowni;) – Rob

Odpowiedz

38

Najczęstsze wykorzystanie window.location jest, aby przeglądarka załadować nową stronę. Typowym błędem jest przypisanie adresu URL do obiektu window.location zamiast jego właściwości href. Prawidłowy sposób to:

window.location.href = 'http://www.guffa.com'; 
+4

Dzięki, Guffa. Używałem window.location = 'url'. Zaktualizowałem do window.location.href i nadal nie jestem przekierowywany. Właściwie nie otrzymuję żadnej odpowiedzi z tej funkcji w Chrome. I stworzył następującą funkcję testową, która działa dobrze w IE i FF, ale nie Chrome: [code] funkcja testfunc() { \t kod var = document.getElementById ("edit-raport-typy").wartość; \t alert (kod); \t window.location.href = "google.com"; } [/ code] –

+0

@Someone: Zamiast iść do strony „google.com” w obecnym miejscu, czy próbowałeś przechodząc na stronę „google.com”? 'window.location.href = 'http: //google.com';' – Guffa

+1

Tak. Wciąż tam nie ma. W Chrome też nie ostrzega o zmiennej kodu. W poprzednim komentarzu wziąłem kod, ale deklarowałem zmienną bezpośrednio w funkcji (var code = "test!"), A następnie ostrzegałem zmienną. FF i IE wyświetlają alert, nawet jeśli Chrome tego nie robi. –

0

Właśnie utworzyłem następujący plik html i powiadomiłem window.location dla mnie w Google Chrome 4.0 - czy używasz starej wersji?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
    <title>Untitled Page</title> 
</head> 
<body> 

</body> 
</html> 
<script language="javascript" type="text/javascript"> 
alert(window.location); 
</script> 
+1

window.location = 'http: //stackoverflow.com'; działa również w Chrome 4.0 i przekierowuje na tę stronę. – amelvin

0

Rozwiązano problem. Nie było problemu z funkcją lub z Chrome. Funkcja powinna zostać wywołana przez element formularza drupal. Dodałem zdarzenie onclick, które wywołało funkcję do samego formularza drupalnego, zamiast konkretnego elementu formularza.

Dość dużo to robi:

$form['testform'] = array(
    '#type' => 'fieldset', 
    '#collapsible' => TRUE, 
    '#collapsed' => FALSE, 
     '#attributes' => array(
     'onchange' => 'testfunc()'), 
); 

Zamiast tego:

$form['testform']['element1'] = array(
    '#type' => 'select', 
     '#options' => options, 
     '#required' => false, 
     '#attributes' => array(
     'onchange' => 'testfunc()'), 

); 

Nie czuję się głupio.

+1

Proszę zaakceptować odpowiedź na własne pytanie, aby zapisać inne osoby przychodzące i próbujące na nie odpowiedzieć (kliknij na zaznaczenie po lewej stronie) – Basic

0

Miałem ten sam problem i nie byłem wystarczająco ostrożny, aby upewnić się, że nowy przekierowany adres URL zawiera białe spacje (wstyd mi).

Tak więc tylko Chrome zatrzymuje tę nową lokalizację, jeśli adres URL nie jest standaryzowany.

Upewnij się, że masz UpdatePanel, jeśli używasz strony wzorcowej.

2

Wystąpił ten problem i okazało się, że funkcja javascript powraca do wartości true po tagu window.location (z powodu funkcji zagnieżdżonych). FF i IE nigdy nie przetworzono tak daleko, podczas gdy chrom zrobił.

+0

Nie zwracałem niczego jawnego; zwrócił false po ustawieniu window.location.href i zadziałało. –

2

Wypróbuj bez window.. Na przykład użyj location.assign() zamiast window.location.assign().

14

Spróbuj dodać "return false;" do wywołania javascript jak tak ...

window.location.href='google.com; 
return false; 
+1

Potwierdzono, że działa w Chrome na iOS. Jeśli ktokolwiek ma jakieś wyjaśnienie tego, byłby bardzo doceniony. – corvuszero

+1

Bez wyjaśnienia, ale mimo wszystko przerażony. Cieszę się, że ktoś o tym wspomniał! –

Powiązane problemy