要素を画面のフルサイズでレンダリングしようとしています:
<!DOCTYPE html>
<html>
<head>
<title>Test Page</title>
</head>
<body>
<canvas></canvas>
<script>
(function(){
var canvas = document.getElementsByTagName("canvas")[0];
canvas.style.background = "#0f0";
canvas.style.width = screen.width + "px";
canvas.style.height = screen.height + "px";
console.log(
"screen.width: " + screen.width +
"\nscreen.height: " + screen.height +
"\ncanvas.width: " + canvas.style.width +
"\ncanvas.height: " + canvas.style.height
);
})()
</script>
</body>
</html>
ただし、キャンバス要素は、chrome v22 では画面の幅の約 2 倍、高さの 2 倍でレンダリングされますが、FF では問題ないようです。コンソール出力が得られます:
screen.width: 1366 screen.height: 768 canvas.width: 1366px canvas.height: 768px
キャンバスの幅と高さをクロムで手動で設定する場合は、次を使用する必要があります。
canvas.style.width = 780 + "px";
canvas.style.height = 435 + "px";
クロムで画面のサイズに合わせてFFをチェックすると、両方の寸法で画面の半分を超えると予想されるようにレンダリングされます。
アップデート:
私はこれを試しました:
<!DOCTYPE html>
<html>
<head>
<title>Test Page</title>
</head>
<body style="padding:0;margin:0;">
<div>
<canvas>
</canvas>
</div>
<script>
(function(){
var div = document.getElementsByTagName("div")[0],
canvas = document.getElementsByTagName("canvas")[0];
div.style.background = "#f00";
div.style.width = screen.width + "px";
div.style.height = screen.height + "px";
canvas.style.background = "#0f0";
canvas.style.width = "100%";
canvas.style.height = "100%";
console.log(
"screen.width: " + screen.width +
"\nscreen.height: " + screen.height +
"\ncanvas.width: " + canvas.style.width +
"\ncanvas.height: " + canvas.style.height
);
})()
</script>
</body>
</html>
しかし、同じ効果があり、FFでは機能しますが、クロムでは機能しません。
以前にテストサイトwww.0xor1.comでこれを行いましたが、jQueryを使用css({width:screen.width, height:screen.height})
して設定したため、機能しますが、この方法がクロムで機能しない理由がわかりません。