2010-02-27 3 views
8

У меня есть функция javascript, которая использует window.location. Он отлично работает в Firefox и Internet Explorer, но не в Chrome. Я тестировал это как на Ubunutu Hardy, так и на Windows Vista. Какова основная проблема и как я могу ее обойти?window.location не работает в браузере Chrome

+8

Это поможет, если вы показали нам JavaScript functuon вы используете ... :) – Rob

+4

-1 - обратиться за помощью с функцией и ожидать, что мы угадать? нужна помощь? показать код. +1 @Rob –

+3

И это не помешает, если я правильно нарисую «функцию»;) – Rob

ответ

38

Наиболее распространенное использование window.location, чтобы сделать браузер загрузить новую страницу. Общей ошибкой является присвоение URL-адресу объекту window.location вместо его свойства href. Таким образом, правильный способ сделать это:

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

Спасибо, Гуффа. Я использовал window.location = 'url'. Я обновился до window.location.href, и я до сих пор не перенаправлен. На самом деле, я не получаю никакого ответа от этой функции вообще в Chrome. Я создал следующую функцию тестирования, отлично работает в IE и FF, но не Chrome: [код] функция testfunc() { \t вар код = document.getElementById ("редактирование-отчет-типа").стоимость; \t предупреждение (код); \t window.location.href = 'google.com'; } [/ code] –

+0

@Someone: вместо того, чтобы перейти на страницу «google.com» на текущем сайте, попробовали ли вы перейти на сайт «google.com»? 'window.location.href = 'http: //google.com';' – Guffa

+1

Да. Он все еще не туда. Он также не предупреждает о переменной кода в Chrome. Я принял код в предыдущем комментарии, но я объявлял переменную прямо в функции (var code = "test!"), А затем предупреждал эту переменную. FF и IE показывают предупреждение, хотя Chrome этого не делает. –

0

Создал только следующий html-файл, и он предупредил, что window.location для меня в Google Chrome 4.0 - используете ли вы старую версию?

<!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'; также работает в Chrome 4.0 и перенаправляет на этот сайт. – amelvin

0

Решение проблемы. Не было проблем с функцией или с Chrome. Функция должна вызываться элементом формы drupal. Я добавлял событие onclick, которое вызывало функцию для самой формы drupal, а не для конкретного элемента формы.

Довольно много делает это:

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

Вместо этого:

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

); 

Не я чувствую себя глупо.

+1

Пожалуйста, примите свой ответ на свой вопрос, чтобы спасти остальных и попытаться ответить на него (щелкните по галочке слева) – Basic

0

У меня была такая же проблема, и я не был достаточно осторожен, чтобы убедиться, что новый перенаправленный URL-адрес содержит пробелы (позор на меня).

Таким образом, только Chrome останавливает это новое местоположение, если URL не стандартизирован.

Убедитесь, что у вас есть UpdatePanel, если вы используете главную страницу.

2

У меня возникла эта проблема, и в конечном итоге моя функция javascript возвращалась true после тега window.location (из-за вложенных функций). FF и IE никогда не обрабатывались так далеко, как хром.

+0

Я ничего не возвращал; возвратил false после установки window.location.href, и он сработал. –

2

Попробуйте без window.. Например, используйте location.assign() вместо window.location.assign().

14

Попробуйте добавить «return false»; на ваш яваскрипт вызова, как так ...

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

Это подтверждено для работы в Chrome iOS. Если у кого-то есть объяснение, то это будет очень полезно. – corvuszero

+1

Никаких объяснений, но, тем не менее, в ужасе. Я просто рад, что кто-то упомянул об этом! –

Смежные вопросы