2010-02-27 15 views
8

Ich habe eine JavaScript-Funktion, die window.location verwendet. Es funktioniert gut in Firefox und Internet Explorer, aber nicht in Chrome. Ich habe das sowohl auf Ubunutu Hardy als auch auf Windows Vista getestet. Was ist das zugrunde liegende Problem und wie kann ich es umgehen?window.location funktioniert nicht im Chrome-Browser

+8

Es würde helfen, wenn Sie uns das Javascript zeigte functuon Sie verwenden ... :) – Rob

+4

-1 - um Hilfe bitten, mit einer Funktion und erwarten, dass wir erraten? möchte Hilfe? zeige den Code an. +1 @Rob –

+3

Und es würde nicht weh tun, wenn ich Rechtschreibung "Funktion" richtig üben;) – Rob

Antwort

38

Die häufigste Verwendung von window.location ist der Browser eine neue Seite laden zu machen. Ein häufiger Fehler besteht darin, die URL dem Objekt window.location anstelle ihrer Eigenschaft href zuzuweisen. Also, der richtige Weg, es zu tun ist:

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

Danke, Guffa. Ich habe window.location = 'url' verwendet. Ich habe mich auf window.location.href aktualisiert und werde immer noch nicht umgeleitet. Tatsächlich bekomme ich in Chrome überhaupt keine Antwort von der Funktion. Ich habe die folgende Testfunktion, die in IE und FF funktioniert gut, aber nicht Chrome: [code] Funktion testfunc() { \t var code = document.getElementById ("edit-Report-Typen").Wert; \t Warnung (Code); \t window.location.href = 'google.com'; } [/ code] –

+0

@Someone: Statt auf der Seite "google.com" auf der aktuellen Website zu gehen, haben Sie versucht, auf die Website "google.com" zu gehen? 'window.location.href = 'http: //google.com';' – Guffa

+1

Ja. Es geht immer noch nicht dorthin. Die Code-Variable wird in Chrome nicht benachrichtigt. Ich habe im vorherigen Kommentar etwas Code herausgenommen, aber ich habe eine Variable direkt in der Funktion deklariert (var code = "test!") Und dann die Variable alarmiert. FF und IE zeigen die Warnung an, obwohl Chrome dies nicht tut. –

0

Habe gerade die folgende HTML-Datei erstellt und die window.location für mich in Google Chrome 4.0 alarmiert - verwenden Sie eine alte Version?

<!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'; funktioniert auch in Chrome 4.0 und leitet auf diese Seite weiter. – amelvin

0

Das Problem behoben. Es gab kein Problem mit der Funktion oder mit Chrome. Die Funktion sollte von einem Drupal-Formularelement aufgerufen werden. Ich habe das onclick -Ereignis hinzugefügt, das die Funktion an die drupal-Form selbst anstatt an ein bestimmtes Formularelement erinnerte.

Ziemlich genau dies zu tun:

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

Statt dessen:

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

); 

Sollte ich nicht dumm fühlen.

+1

Bitte akzeptieren Sie Ihre Antwort auf Ihre eigene Frage, um andere zu retten, die mitkommen und versuchen, sie zu beantworten. (Klicken Sie auf das Häkchen links) – Basic

0

Ich hatte das gleiche Problem, und ich war nicht vorsichtig genug, um sicherzustellen, dass die neue umgeleitete URL Leerzeichen enthielt (Schande über mich).

Nur Chrome stoppt diesen neuen Speicherort, wenn die URL nicht standardisiert ist.

Stellen Sie sicher, dass Sie über ein UpdatePanel verfügen, wenn Sie eine Masterseite verwenden.

2

Ich hatte dieses Problem, und es endete damit, dass meine JavaScript-Funktion nach dem window.location -Tag (aufgrund verschachtelter Funktionen) True zurückgegeben wurde. FF und IE haben noch nie so weit gearbeitet, Chrome dagegen schon.

+0

Ich habe nichts explizit zurückgegeben; Nach der Einstellung von window.location.href wurde false zurückgegeben und es funktionierte. –

2

Versuchen Sie ohne window.. Verwenden Sie beispielsweise location.assign() anstelle von window.location.assign().

14

Versuchen Sie, "return false;" anzuhängen. zu Ihrem Javascript Aufruf wie so ...

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

Dies funktioniert wie für Chrome iOS. Wenn jemand eine Erklärung dafür hat, würde es sehr geschätzt werden – corvuszero

+1

Keine Erklärung, aber dennoch entsetzt. Ich bin nur froh, dass jemand es erwähnt hat! –

Verwandte Themen