2014-02-05 3 views
2

visibility: hidden;으로 스타일이 지정된 캔버스는이 코드로 1 초 후에 창 크기로 표시됩니다. 맞습니까?보이지 않는/숨겨진 캔버스가 Chrome에 표시되지 않습니다.

var canvas = document.getElementById("myCanvas"); 
canvas.width = window.innerWidth; 
canvas.height = window.innerHeight; 
// draw on canvas.getContext("2d") ... 
window.setTimeout(function() { 
    canvas.style.visibility = "visible"; 
}, 1000); 

IE11에서는 작동하지만 Chrome3 (Windows7에서 실행)에서는 작동하지 않습니다.
(휴, 내가 IE로하지만 크롬 작동 뭔가를 찾을 수 없을 것입니다 결코 불구하고!)

나는 캔버스를 숨기고 보여 display: none;canvas.style.display= "block";를 사용하여 시도와 같은 동작을 얻었다. 당신이 setTimeout에 의해 트리거 기능 후에 (문서 영역 위로 마우스를 이동 한 후에,라고 나타납니다 크롬, 캔버스 (및 그려진 내용)와 jsfiddle 이상한 http://jsfiddle.net/CX49R/

: 여기

테스트입니다 코스). 그러나 동일한 HTML + CSS + JS 코드가 하나의 Chrome 탭/창에서 실행되는 경우에는 절대 나타나지 않습니다 ("개발 도구"에서 "요소 검사"를 클릭하거나 문서 영역을 클릭하지 않는 한).

무엇이 여기에 있습니까? 나는 원래 시나리오의 최소한으로 코드를 줄이려고했다.

+0

, 잘 작동 크롬에 있습니다. 어쩌면 z- 인덱스를 시도해보십시오. -1 그러면 초 후에 0으로 바뀝니다. – Huangism

+0

잘못된 것을하지 않으면 크롬이 확실히 작동합니다. 가시성 대신에 디스플레이를 사용하여 [jsfiddle] (http://jsfiddle.net/CX49R/1/)에서 저를 해결했습니다. – Strille

+0

@Strille, jsfiddle 외부에서 작동하지 않고 jQuery를 사용하지 않았습니다. Windows7에서는 jQuery와 작동하지만 Nexus 4/Android 4.4.2 – ericbn

답변

2

어떻게 든 캔버스 요소와 관련이있는 것 같습니다. 숨겨진 부모 DIV 만들기 대신 캔버스 요소의 문제를 해결하기 위해 보인다 보여주는 : 맥에

http://jsfiddle.net/CX49R/2/

<div id="wrapper"> 
    <canvas id="myCanvas">Your browser does not support canvas.</canvas> 
</div> 
+0

Nexus 4/Android 4.4.2에서 실행되는 Chrome에서도 작동합니다. jQuery (예, _THE_ jQuery)조차도 원래의 솔루션을 사용할 수 없습니다. – ericbn

0

나는 평판이 충분하지 않아 답변을 대신 드리겠습니다. 문제는 setTimeout이 아니며 문제는 canvas.style.visibility = "visible";입니다. 귀하의 제한 시간에 경고를 설정하고 잠시 후 문제가 발생했습니다. 내 생각에 canvas.style.visibility이 마우스 이벤트를 기다리고 기다리는 중입니다.

+0

그래, 그게 문제인 것처럼 보입니다! 그래서 우리가 버그를 찾았 어?! :-) – ericbn

+0

문서에서 문제 라이브러리를 확인하십시오. 액션 자체가 의도 된 '의도 된'버그 일 수 있습니다. 따라서이 방법으로는 작동하지 않습니다. Strille에는 해결 방법이 있습니다. – maggiekh

관련 문제