概要
タイトルそのままですが、
JavaScriptで
window.open(hoge, '_self');
としたとき、変数hoge
がundefined
だった場合の動作が主にIEとそれ以外で異なります。
環境毎結果
ブラウザ | 結果 |
---|---|
IE11 | /undefined へ移動 |
Edge | /undefined へ移動 |
Chrome | 移動しない |
FireFox | 移動しない |
コード
JSFiddleでは上手く行かなかったので手元で確認しました。
ボタン名が変われば移動しなかったとしています。
<!DOCTYPE html>
<html>
<script>
window.onload = function () {
document.getElementById('open').addEventListener('click', function () {
var a;
window.open(a, '_self');
document.getElementById('open').innerText = 'end';
})
}
</script>
<body>
<button id="open">oepn</button>
</body>
</html>
遭遇箇所が、処理が失敗した場合は移動しないという仕様で、開発ブラウザでは見た目上エラーもなく、移動もせずで仕様通りだった。
また、URLをスラッシュ区切りでパラメーターとして扱うフレームワークだったので、
IEの場合は、失敗時にリロードが起こる(実はundefinedパラメータ付きでのURLへ移動)というよくわからないブラウザ差異を生み出していた