以下のこのコードは、リダイレクトしようとすると、何らかの理由で機能しません。 window.location.hrefなど、他のいくつかの方法を試しました。動作するのはwindow.open ("")
だけですが、同じページを表示する必要がある場合は、新しいウィンドウでページが開きます。 window.open("", "_self")
を実行すると、再び機能しなくなります。 window.location
をalert
に置き換えると正常に機能するため、コード全体は正常であり、同じページにリダイレクトされないようになっていると思います。この問題は、私のWindows ChromeおよびMacFirefoxでも発生します。
<html>
<head>
<script type="text/javascript">
function checkAnswers(){
getElementById("myQuiz");
if(myQuiz.elements[1].checked){
window.location = "www.google.com";
}else{
alert("Failed");
}
};
</script>
</head>
<body>
<img src="Castle.JPG" />
<form id="myQuiz" onsubmit="checkAnswers()" action="">
<p>Name the country this castle is located in?
<br/>
<input type="radio" name="radiobutton" value="A"/>
<label>England</label>
<input type="radio" name="radiobutton" value="B"/>
<label>Ireland</label>
<input type="radio" name="radiobutton" value="C"/>
<label>Spain</label>
<input type="radio" name="radiobutton" value="D"/>
<label>France</label>
<input type="submit" name="submit" value="Submit"/>
<input type="reset" name="reset" value="Reset"/>
</p>
</form>
</body>
</html>
jsを次のように変更します。
function checkAnswers()
{
var myQuiz=document.getElementById("myQuiz");
if (myQuiz.elements[1].checked) {
window.location.href = "http://www.google.com";
}
else {
alert("Failed");
}
return false;
};
と変更:
<form id="myQuiz" onsubmit="checkAnswers()" action="">
に
<form id="myQuiz" onsubmit="return checkAnswers();" action="">
場所を変更するときは、絶対URLを指定する必要があります。
location.href = '/some_page_on_my_site';
または:
location.href = 'http://www.google.com';
または:
location.href = '//www.google.com';
最後のものは、現在のスキームに応じて、httpまたはhttpsに移動します。ありがとう@Derek
2018年
マルチブラウザ:サファリ、クローム、Firefox:
ちょうどこの作品:
window.location.replace(url)
window.locationまたはwindow.locationにURLを割り当てようとする別のオプションが失敗する
これを実行すると:
window.location ="www.google.com";
現在のrequestURIに関連してこれを実行しています。したがって、 http://example.com ページを表示している場合は、次の場所にリダイレクトしようとしています。
http://example.com/www.google.com
代わりに、プロトコルを含めることを忘れないでください。
window.location ="http://www.google.com";
Window.locationはアドレスバーではなく、技術者以外の人がアドレスバーにWebアドレスを入力するのを処理するように設計されていることを忘れないでください。 window.locationでは、http://を明示的に含める必要があります。
window.location
で使用されているURLはローカルです。 URLのhttp://
部分を追加する必要があります。
MyQuiz変数を割り当てるのを忘れました
var myQuiz = document.getElementById( "myQuiz" );
また、URLの先頭にhttp://
を追加する必要があります。それ以外の場合は、相対URLを意味するためです。