Canvas 当画布元素与另一个div重叠时(Safari 5.1/Mac 10.7.1)

Canvas 当画布元素与另一个div重叠时(Safari 5.1/Mac 10.7.1),canvas,safari,dhtml,Canvas,Safari,Dhtml,我英语说得不太好。 我开发基于html5的web应用程序。 我已经测试过safari、chrome和firefox。 在safari 5.0之前都没有问题。 但升级safari 5.1后,只有safari 5.1、Mac 10.7.1出现此问题 当画布元素与另一个div重叠时,会出现此问题 红色的div有黄色的div作为孩子。如果红色div移动,则预期移动黄色div。 但不要移动黄色div only safari 5.1 mac 10.7.1。 当画布区域和子div重叠时会出现此问题。 不发

我英语说得不太好。 我开发基于html5的web应用程序。 我已经测试过safari、chrome和firefox。 在safari 5.0之前都没有问题。 但升级safari 5.1后,只有safari 5.1、Mac 10.7.1出现此问题

当画布元素与另一个div重叠时,会出现此问题



红色的div有黄色的div作为孩子。如果红色div移动,则预期移动黄色div。 但不要移动黄色div only safari 5.1 mac 10.7.1。 当画布区域和子div重叠时会出现此问题。 不发生,不重叠,不执行“canvas.getContext('2d')”

这只是野生动物园的臭虫吗? 有解决办法吗

多谢各位

var d = document.createElement ("div");
document.body.appendChild ( d );

var canvas = document.createElement ("canvas");
canvas.style.backgroundColor = "pink";
canvas.style.position = "absolute";
canvas.style.left = "0px";
canvas.style.top = "0px";
canvas.style.width = "100px";
canvas.style.height = "100px";
d.appendChild ( canvas );
var c2d = canvas.getContext("2d");

var d1 = document.createElement ("div");
d.appendChild ( d1 );
d1.style.left = "50px";
d1.style.top = "50px";
d1.style.width = "500px";
d1.style.height = "100px";
d1.style.position = "absolute";
d1.style.overflow = "hidden";
d1.style.backgroundColor = "gray";

var red = document.createElement ("div");
d1.appendChild ( red );
red.style.position = "absolute";
red.style.left = "10px";
red.style.top = "10px";
red.style.width = "100px";
red.style.height = "100px";
red.style.display = "none";
red.style.backgroundColor = "red";

var yellow = document.createElement ("div");
red.appendChild ( yellow );
yellow.style.position = "absolute";
yellow.style.left = "10px";
yellow.style.top = "10px";
yellow.style.width = "50px";
yellow.style.height = "50px";
yellow.style.backgroundColor = "yellow";


var but = document.createElement ("div");
d.appendChild ( but );
but.style.position = "absolute";
but.style.left = "200px";
but.style.top = "10px";
but.style.width = "100px";
but.style.height = "30px";
but.style.backgroundColor = "black";
but.innerHTML = "Click";
but.style.color = "white";

var flag = true ;
but.onmousedown = function ()
{
    var gap = 5 ;
    red.x = 10 ;
    red.style.display = "block";
    var fn = function ()
    {
        red.style.left = (red.x+gap)+"px";
        red.x += gap ; 

        flag = !flag ;
        if ( red.x > 1000 ) return ;
        setTimeout( fn, 10 );
    }

    setTimeout( fn, 10 );

}