メインページからwindow.openを使用してポップアップウィンドウを作成すると、子/ポップアップページはwidth/heightを表示するonloadイベントを使用します。しかし、クロムでは常に0が返されます。ウィンドウとドキュメントの幅と高さの両方を確認すると(jQueryの有無にかかわらず)0だけが返されます。タブ内の子ページを読み込むだけで、常に幅と高さが正しくレポートされます。クロムのjQueryロードイベントは、ポップアップで幅/高さの値が0になる
この動作は正しいですか?ロードイベントに何か問題はありますか? Chromeで?幅/高さプロパティが設定されていることを保証するために待つことができる別のイベントがありますか?
オンロードにタイムアウトが設定されていると、正しい値が得られる可能性が高くなります。しかし、それはちょうどあなたが幅/高さを確認する前にどのくらい待つべきかについての推測ゲームと思われる。特定のイベントを待つ方法はありません確かに子ウィンドウの幅と高さはChromeで設定されていますか?
両方のページで以下のクイックデモをご覧ください。誰かを願っているのは、setTimeoutに入れる時間が不確定であると推測することを伴わない解決策があるかもしれません。
を編集してください:私はこれをChromeバージョン14/15でテストしました。私が使用したhttp://api.jquery.com/height/
:
main.htmlを
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<title>main</title>
</head>
<body>
<input type="button" value="Pop" onclick="window.open('http://localhost:8085/social_test/test.html', 'namedWnd', 'width=320,height=240')" />
</body>
</html>
test.htmlというあなたの代わりに$(ウィンドウ)の$(文書)を使用していない理由を
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<title>test</title>
<script type="text/javascript" src="jquery-1.6.4.js"></script>
<script type="text/javascript">
$(window).load(function(){
var report = function() {
alert($(window).width() + " x " + $(window).height());
};
report();
//window.setTimeout(report, 1000);
});
// without any jquery
/*window.onload = function() {
var report = function() {
alert(window.innerWidth + " x " + window.innerHeight);
// or document's size
//alert(window.document.documentElement.clientWidth
// + " x " + window.document.documentElement.clientHeight);
};
report();
//window.setTimeout(report, 1000);
};*/
</script>
</head>
<body/>
</html>
あなたは身体にいくつかのコンテンツを追加する場合、何? – roberkules
あなたのコードは、基本的にChrome 16で動作しました。正しい寸法を表示します。 – david
これは実際には、ドキュメントの幅と高さを確認している限り動作するようです。 – Nicholi