「windows.location.href =any与えられたアンカー」だけを実行する「move」という名前のJavaScript関数があります。
この関数はIE、OperaおよびSafariで機能しますが、Firefoxではどういうわけか無視されます。Googleでの調査では満足な回答が得られませんwhy it動作しません。
JavaScriptの第一人者がこの動作について知っていますか?JavaScriptを介してアンカーにジャンプするためのベストプラクティスは何でしょうか?
あなただけを使ってみましたか
window.location = 'url';
一部のブラウザでは、window.location.href
は読み取り専用のプロパティであり、場所を設定するのに最適な方法ではありません(技術的には許可されていますが)。 location
プロパティを単独で使用すると、すべてのブラウザーでリダイレクトされます。
Mozillaのドキュメントには、window.location
オブジェクトの使用方法に関するかなり詳細な説明があります。
コールバックが続くイベントの後にこのJavaScriptコードを呼び出そうとしている場合は、関数に別の行を追加する必要があります。
function JSNavSomewhere()
{
window.location.href = myUrl;
return false;
}
ページのマークアップで、クリック時にこの関数を呼び出すコントロールは、この関数の値を返す必要があります
<asp:button ........ onclick="return JSNavSomewhere();" />
Falseの戻り値はコールバックをキャンセルし、リダイレクトが機能するようになります。 IEでこれが機能する理由まあ、彼らがコールバックよりリダイレクトを優先したとき、彼らは問題について別の考えをしていたと思います。
お役に立てれば!
そのようなシナリオで確認する1つの観察
以下はIE
で機能しますが、Chrome
でもFirefox
でも機能しません(私がテストしたバージョン)
window.location.href("http://stackoverflow.com");
以下は3つすべてが機能します
window.location.href = "http://stackoverflow.com";
たぶんそれはあなたの投稿のタイプミスでコードではありませんが、それはwindowではなくwindowsではありません
同じ問題があり、これはクリックイベントに関連していると思います。
ブラウザを特定のページに移動する機能があります。その関数をいくつかのクリックイベント(ボタンと画像)に追加します。また、ユーザーがエスケープを押したときに関数を実行します(ドキュメントのonkeypressイベント)。
その結果、すべてのケースで関数が呼び出されて実行されますが、クリックがあった場合にのみ、ブラウザーが必要なアドレスに移動します。
更新うまくいきました!とともに
setTimeout( "location.replace('whatever.html');", 0 );
イベントがキーを押したときにlocation.replaceが機能しなかった理由はわかりませんが、settimeoutを使用すると機能します:)
pdateエスケープを押したときにイベントの後にfalseを返すと、リダイレクトが機能します。 trueまたは何も返さない場合、ブラウザはたどらない
私はあなたをフォローするかどうかわかりません。
私が試したところ:FF3を使って Lua 5.1リファレンスマニュアル (長く、多くのアンカーを使用)。
アドレスバーにjavascript:window.location.href="#2.5"; alert(window.location.href);
を貼り付けると、正しいアンカーに移動し、正しいURLが表示されました。もちろん、完全なURLでも機能します。
代替コード:javascript:(function () { window.location.href="#2.5"; })();
おそらくあなたは#を忘れました。よくある問題です。イメージマップでも同様です。
formを使用してデータを投稿している場合、これが発生することがあります。 ajaxを使用している場合は、「フォーム」を「div」に変更してみてください。これにより、フォームのデフォルトの動作が妨げられ、ajaxコードが実行されます。
上記のように、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";
}
window.location.hrefは、すべてのバージョンのFirefoxで正常に機能します。また、document.location.hrefも同様です。コードには、何かを壊している何かがあると思います。
これを空白のページにドロップします。機能する場合は、ページに何か問題があることを示しています。
<script>
window.location.href = 'http://www.google.com/';
</script>
window.location.hash = "#gallery";
参考までに、同じ問題がありました。
onclick = "javascript:window.location( 'example.html');" FF(最新)では動作しませんでした
Onclick = "javascript:window.location = 'example.html';"に書き換える必要がありました。それを機能させる
完全なJavaScriptスクリプトタグを追加してください
<script type="text/javascript" language="javascript"></script>
これを試しましたか?
Response.Write("<script type='text/javaScript'> window.location = '#myAnchor'; </script>";);
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")
}
}
}
私は同じ問題を克服しました。そして問題は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属性を削除します
お役に立てれば。
window.location.assign( "link to next page")は両方の(chromeとfirefox)ブラウザで動作するはずです。
window.location.assign("link to next page")