web-dev-qa-db-ja.com

windows.location.hrefがFirefox3で機能しない

「windows.location.href =any与えられたアンカー」だけを実行する「move」という名前のJavaScript関数があります。
この関数はIE、OperaおよびSafariで機能しますが、Firefoxではどういうわけか無視されます。Googleでの調査では満足な回答が得られませんwhy it動作しません。
JavaScriptの第一人者がこの動作について知っていますか?JavaScriptを介してアンカーにジャンプするためのベストプラクティスは何でしょうか?

19
julio.g

あなただけを使ってみましたか

window.location = 'url';

一部のブラウザでは、window.location.hrefは読み取り専用のプロパティであり、場所を設定するのに最適な方法ではありません(技術的には許可されていますが)。 locationプロパティを単独で使用すると、すべてのブラウザーでリダイレクトされます。

Mozillaのドキュメントには、window.locationオブジェクトの使用方法に関するかなり詳細な説明があります。

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

34
Dan Herbert

コールバックが続くイベントの後にこのJavaScriptコードを呼び出そうとしている場合は、関数に別の行を追加する必要があります。

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

ページのマークアップで、クリック時にこの関数を呼び出すコントロールは、この関数の値を返す必要があります

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

Falseの戻り値はコールバックをキャンセルし、リダイレクトが機能するようになります。 IEでこれが機能する理由まあ、彼らがコールバックよりリダイレクトを優先したとき、彼らは問題について別の考えをしていたと思います。

お役に立てれば!

19
sprite

そのようなシナリオで確認する1つの観察

以下はIEで機能しますが、ChromeでもFirefoxでも機能しません(私がテストしたバージョン)

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

以下は3つすべてが機能します

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

たぶんそれはあなたの投稿のタイプミスでコードではありませんが、それはwindowではなくwindowsではありません

4
vincent

同じ問題があり、これはクリックイベントに関連していると思います。

ブラウザを特定のページに移動する機能があります。その関数をいくつかのクリックイベント(ボタンと画像)に追加します。また、ユーザーがエスケープを押したときに関数を実行します(ドキュメントのonkeypressイベント)。

その結果、すべてのケースで関数が呼び出されて実行されますが、クリックがあった場合にのみ、ブラウザーが必要なアドレスに移動します。

更新うまくいきました!とともに

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

イベントがキーを押したときにlocation.replaceが機能しなかった理由はわかりませんが、settimeoutを使用すると機能します:)

pdateエスケープを押したときにイベントの後にfalseを返すと、リダイレクトが機能します。 trueまたは何も返さない場合、ブラウザはたどらない

2
graffic

私はあなたをフォローするかどうかわかりません。
私が試したところ:FF3を使って Lua 5.1リファレンスマニュアル (長く、多くのアンカーを使用)。
アドレスバーにjavascript:window.location.href="#2.5"; alert(window.location.href);を貼り付けると、正しいアンカーに移動し、正しいURLが表示されました。もちろん、完全なURLでも機能します。
代替コード:javascript:(function () { window.location.href="#2.5"; })();

おそらくあなたは#を忘れました。よくある問題です。イメージマップでも同様です。

2
PhiLho

formを使用してデータを投稿している場合、これが発生することがあります。 ajaxを使用している場合は、「フォーム」を「div」に変更してみてください。これにより、フォームのデフォルトの動作が妨げられ、ajaxコードが実行されます。

1
libra

上記のように、window.location.hrefの後にreturn false;を追加する必要があります。

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

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

window.location.hrefは、すべてのバージョンのFirefoxで正常に機能します。また、document.location.hrefも同様です。コードには、何かを壊している何かがあると思います。

これを空白のページにドロップします。機能する場合は、ページに何か問題があることを示しています。

<script>
  window.location.href = 'http://www.google.com/';
</script>
1
scunliffe
window.location.hash = "#gallery";
0
Almost

参考までに、同じ問題がありました。

onclick = "javascript:window.location( 'example.html');" FF(最新)では動作しませんでした

Onclick = "javascript:window.location = 'example.html';"に書き換える必要がありました。それを機能させる

0
Tom Toms

完全なJavaScriptスクリプトタグを追加してください

<script type="text/javascript" language="javascript"></script>
0
Ketan Mayangar

これを試しましたか?

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

window.location.replaceを使用して、ブラウザの履歴に登録せずにアンカーにジャンプすることもできます。

この article は、アンカーにジャンプする方法を示し、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")
        }
    }
}
0
VonC

私は同じ問題を克服しました。そして問題はJavaScriptではなく、<a>要素のhref属性にあります。

私の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属性を削除します

お役に立てれば。

0
Awal Istirdja

window.location.assign( "link to next page")は両方の(chromeとfirefox)ブラウザで動作するはずです。

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