views:

1720

answers:

7

I have a javascript function that uses window.location. It works fine in Firefox and internet Explorer, but not in Chrome. I've tested this on both Ubunutu Hardy and Windows Vista. What is the underlying problem, and how can I circumvent it?

A: 

Just created the following html file and it alerted the window.location for me in Google Chrome 4.0 - are you using an old version?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
<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>
amelvin
window.location='http://stackoverflow.com'; also works in Chrome 4.0 and redirects to this site.
amelvin
+2  A: 

The most common use of window.location is to make the browser load a new page. A common error is to assign the URL to the window.location object instead of it's property href. So, the correct way to do it is:

window.location.href = 'http://www.guffa.com';
Guffa
Thanks, Guffa. I was using window.location = 'url'. I updated to window.location.href and I'm still not getting redirected. Actually, I'm not getting any response from the function at all in Chrome. I created the following test function that works fine in IE and FF, but not Chrome:[code]function testfunc(){ var code = document.getElementById("edit-report-types").value; alert(code); window.location.href = 'google.com';}[/code]
Someone
@Someone: Instead of going to the page "google.com" in the current site, have you tried going to the site "google.com"? `window.location.href='http://google.com';`
Guffa
Yes. It still doesn't go there. It doesn't alert the code variable either, in Chrome. I took some code out in the previous comment, but I was declaring a variable right in the function (var code = "test!") and then alerting the variable. FF and IE shows the alert, even though Chrome doesn't.
Someone
A: 

Resolved the issue. There wasn't a problem with the function or with Chrome. The function should be called by a drupal form element. I was adding the onclick event which called the function to the drupal form itself, instead of a particular form element.

Pretty much doing this:

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

Instead of this:

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

);

Don't I feel silly.

Someone
A: 

:) i had the same problem and i wasn't careful enough to make sure that the new redirected url contained white spaces (shame on me). So only Chrome stops this new location if the url is not standardized.

Regards, Corina

corina
A: 

And i forget to add an important thing : make sure u have an UpdatePanel if you are using a MAster PAge (in .net)

corina
A: 

I was having this problem, and it ended up being that my javascript function was returning true after the window.location tag (due to nested functions). FF and IE never processed that far, while chrome did.

Derrick Bowen
A: 

somewhat related: it took me quite a while to notice that it actually worked, but took content from cache :/

Baczek