2016-08-19 4 views
0

私は<script></script>の間にこのコードを追加した場合:window.open関数で開いた場合、新しいウィンドウの属性は何ですか?

function test() 
{ 
    var newWindow = window.open("https://stackoverflow.com/", "a", "width = 600,height = 400"); 
    document.write(newWindow.location.href); 
    document.write(newWindow.innerWidth); 
} 
test(); 

を、出力が「について:空白」で、0、私はそれが「https://stackoverflow.com/」と600 すべきだと思いますけれども、私はとても混乱していますこれについて、そして説明を待っている。

AND:新しいウィンドウのURLを取得したい場合、どうすればよいですか? 非常に感謝しています。

+0

おそらくタイミングの問題です。新しいウィンドウを開くことはすぐには起こりませんが、そのタスクはブラウザに渡され、ポップアップが完全にインスタンス化されロードされるのを待つことなくスクリプトが続行されます。 _ "新しいウィンドウのURLを取得したい場合、どうすればいいですか?" - あなたのスクリプトがウィンドウを開いたばかりなので、すでに知っているはずです。 – CBroe

+1

新しいウィンドウについて何かにアクセスするためのオプションは、別のドメインのものがロードされている場合には制限されることにも留意してください。 –

+0

URLを取得するのに非常にラウンドアバウトのように聞こえます。 'window.open()'を実行している場合、URLにはまだアクセスしていませんか? – JLRishe

答えて

1

あなたはloadイベントを待機する場合は非同期にこれらの値をキャプチャすることができます:ジェームズ・ソープが指摘するように、新しいウィンドウがどこのページと同じドメイン内にある場合

var newWindow = window.open('http://www.stackoverflow.com', 'a', 'width=600,height=400') 
newWindow.addEventListener('load', function() { 
    console.log(newWindow.location.href); 
    console.log(newWindow.innerWidth); 
}); 

しかし、これはのみ動作しますスクリプトが実行されていて、これが非同期的に発生するため、document.write()を使用して達成しようとしているものは機能しない可能性があります。

関連する問題