Подтвердить что ты не робот

Windows.location.href не работает в Firefox3

У нас есть функция JavaScript с именем "move", которая выполняет только "windows.location.href= любой данный якорь".
Эта функция работает в IE, Opera и Safari, но почему-то игнорируется в Firefox. Исследование Google не дает удовлетворительного ответа , почему он не работает.
Знает ли какой-либо JavaScript-гуру об этом поведении, и как лучше всего перейти на якорь с помощью JavaScript?

4b9b3361

Ответ 1

Пробовал ли вы просто использовать

window.location = 'url';

В некоторых браузерах window.location.href - свойство только для чтения, и это не лучший способ установить местоположение (даже если это технически это должно вам позволить). Если вы используете свойство location самостоятельно, это должно быть перенаправлено для вас во всех браузерах.

Документация Mozilla содержит довольно подробное объяснение того, как использовать объект window.location.

https://developer.mozilla.org/en/DOM/window.location

Ответ 2

Если вы пытаетесь вызвать этот код javascript после события, за которым следует обратный вызов, вы должны добавить еще одну строку в свою функцию:

function JSNavSomewhere()
{
    window.location.href = myUrl;
    return false;
}

в вашей разметке для страницы, элемент управления, вызывающий эту функцию при щелчке, должен вернуть это значение функции

<asp:button ........ onclick="return JSNavSomewhere();" />

Значение ложного возврата отменяет обратный вызов, и перенаправление теперь будет работать. Почему это работает в IE? Ну, я думаю, они думали по-другому о проблеме, когда они уделяли приоритетное внимание перенаправлению на обратный вызов.

Надеюсь, это поможет!

Ответ 3

Одно наблюдение для обеспечения в таком сценарии

Следующее будет работать в IE, но ни в Chrome, ни в Firefox (тестируемые версии)

 window.location.href("http://stackoverflow.com");

После этого будут работать все три

window.location.href = "http://stackoverflow.com";

Ответ 4

Возможно, это просто опечатка в вашем посте, а не в вашем коде, но это окно и не окна

Ответ 5

Я не уверен, что буду следовать за вами. Я просто попробовал: переход с FF3 на Справочное руководство Lua 5.1 (длинное и с множеством якорей). < ш > Вставив javascript:window.location.href="#2.5"; alert(window.location.href); в адресную строку, я пошел в правый якорь и отобразил правильный URL. Работает также с полным URL, конечно.
Альтернативный код: javascript:(function () { window.location.href="#2.5"; })();

Возможно, вы забыли #. Обычная проблема, также с картами изображений.

Ответ 6

У меня такая же проблема, и я думаю, что это связано с событием click.

У меня есть функция, которая перемещает браузер на определенную страницу. Я присоединяю эту функцию к некоторым событиям щелчка: кнопкой и изображением. Кроме того, я выполняю функцию, когда пользователь нажимает escape (документ onkeypress event).

Результаты состоят в том, что во всех случаях функция вызывается и выполняется, но только когда есть щелчок, браузер переходит к адресу, который я хочу.

Обновление Я заработает! с

setTimeout( "location.replace('whatever.html');", 0 );

Я не знаю, почему location.replace не работал, когда событие было нажатием клавиши, но с настройкой он работает:)

Обновление Возврат false после события, когда вы нажимаете escape, делает перенаправление. Если вы вернете true или ничего, браузер не будет следовать

Ответ 7

window.location.href отлично работает во всех версиях Firefox, так же как document.location.href. Я думаю, что в вашем коде есть что-то еще.

отбросьте это на пустой странице, если он работает, это указывает на то, что на вашей странице что-то не так.

<script>
  window.location.href = 'http://www.google.com/';
</script>

Ответ 8

Вы должны добавить return false; после окна .location.href, как указано выше.

function thisWorks()
{
    window.location.href = "http://www.google.com";
    return false;
}

function thisDoesNotWork()
{
    window.location.href = "http://www.google.com";
}

Ответ 9

Вы также можете использовать window.location.replace для перехода к якорю без регистрации в истории браузера:

Эта статья иллюстрирует, как перейти к привязке и использует href как свойство только для чтения.

function navigateNext() 
{
    if (!window.location.hash) 
    {
        window.location.replace(window.location.href + unescape("#2"))
    } 
    else 
    {
        newItem = nextItem(window.location.hash)
        if (document.getElementById(newItem)) 
        {
            window.location.replace(stripHash(window.location) + "#" + newItem)
        } 
        else 
        {
            window.location.replace(stripHash(window.location) + "#1")
        }
    }
}

Ответ 10

Вы пробовали это?

Response.Write("<script type='text/javaScript'> window.location = '#myAnchor'; </script>";); 

Ответ 11

window.location.hash = "#gallery";

Ответ 12

добавьте полный тег javascript script

<script type="text/javascript" language="javascript"></script>

Ответ 13

Для справки у меня была та же проблема.

onclick = "javascript: window.location('example.html');" не работает под FF (последний)

Мне просто пришлось переписать onclick = "javascript: window.location = 'example.html';" чтобы заставить его работать

Ответ 14

Я просто преодолеваю ту же проблему. и проблема не в javascript, а атрибут href в элементе <a>.

мой код js

function sebelum_hapus()
{
var setuju = confirm ("Anda akan menghapus data...")
if (setuju)
window.location = "index.php";
}

мой предыдущий html был

<a href="" onClick="sebelum_hapus();">Klik here</a>

и я обновляю его до

<a href="#" onClick="sebelum_hapus();">Klik here</a>

или удалить атрибут href

надеюсь, что это поможет.

Ответ 15

Когда вы используете форму для публикации данных, это может произойти. если вы используете ajax, попробуйте изменить "форму" на "div". это предотвратит поведение формы по умолчанию и сделает ваш код ajax.

Ответ 16

window.location.assign( "ссылка на следующую страницу" ) должен работать в обоих браузерах (хром и firefox).

window.location.assign("link to next page")

Ответ 17

Другая опция:

document.location.href ="..."