ร่วมด้วยช่วยกัน Say No To IE 6! สำหรับเว็บที่ใช้ jQuery (และพวก Prototype JavaScript ตัวอื่น ๆ ด้วย)

จาก entry หมดเวลา Internet Explorer 6 แล้ว เลิกใช้มันได้แล้ว !!! และจาก Campaign “Say No To IE 6!” จากเว็บ SaveTheDevelopers.org นั้นเค้าให้เอา code ด้านล่างนี้ไปใส่

<script src="http://www.savethedevelopers.org/say.no.to.ie.6.js"></script>

แต่ถ้าเว็บใครใช้ jQuery นี่อาจจะไม่ได้ แบบ Theme K2 ของผม วิธีอีกแบบที่สามารถทำได้ และทำงานร่วมกับ jQuery ได้ก็คือใช้ CSS – Conditional comments นั้นเอง โดยกำหนดไว้ว่าถ้า IE ที่ version น้อยกว่า 7 ให้โชว์ตัว popDown นี้ขึ้นมาครับผม

<!--[if lt IE 7]>
<script type="text/javascript" src="path/to/savethedevelopers.js"></script>
< ![endif]-->

เสร็จแล้วในไฟล์ savethedevelopers.js ก็ปรับแก้เป็นแบบนี้ครับ

jQuery(document).ready(function(){
var now = new Date();
var time = now.getTime();
var div = document.createElement('a');
var id = 'saynotoie6_div_' + time;
div.setAttribute('id',id);
div.setAttribute('href','http://www.savethedevelopers.org/');
div.setAttribute('target','_blank');
div.style.display = 'block';
div.style.color = '#1d1d1d';
div.style.textAlign = 'left';
div.style.fontFamily = 'Arial';
div.style.fontSize = '11px';
div.style.background = 'url(http://webhost.domain/path/to/savethedevelopers/PopDown.gif)';
div.style.padding = '0';
div.style.position = 'absolute';
div.style.top = '0';
div.style.right = '40px';
div.style.zIndex = '999999';
div.style.width = '330px';
div.style.height = '63px';
div.style.marginTop = '-80px';
div.style.filter = 'alpha(opacity=95)';
document.body.appendChild(div);

var animate = function(){
var myDiv = document.getElementById(id);
var value = parseInt(myDiv.style.marginTop)
myDiv.style.marginTop = value + 1 + 'px';
if(parseInt(myDiv.style.marginTop) < -1){
            var timer = setTimeout(animate,30 * 80/Math.abs(value) * .27);
        }else{
            var timer = setTimeout(hide,25000);
        }
    }

    var hide = function(){
        var myDiv = document.getElementById(id);
        var value = parseInt(myDiv.style.marginTop)
        myDiv.style.marginTop = value - 1 + 'px';
        if(parseInt(myDiv.style.marginTop) > -80){
var timer = setTimeout(hide,1.4 * 80/Math.abs(value) * 3.70);
}
}

setTimeout(animate,1000);
});

ลองเทียบกับของเก่าเค้าก็ได้นะครับ อันนี้ผมปรับให้โชว์ไว้สัก 25 วินาทีครับผม ส่วนถ้าเอาไปใช้กับ mootools หรือตัวอื่น ๆ ก็เปลี่ยนการ windows.onload เป็นแบบอื่น แทนการใช้ jQuery(document).ready(); ครับ

เรามาร่วมด้วยช่วยกันประกาศครับผม เอาพวกไม่ได้มาตรฐานออกไปจากสังคมสักทีนึงครับผม

4 thoughts on “ร่วมด้วยช่วยกัน Say No To IE 6! สำหรับเว็บที่ใช้ jQuery (และพวก Prototype JavaScript ตัวอื่น ๆ ด้วย)”

  1. Say No To IE ไปเลยไม่ครับ
    เบื่อกับการทำ closs browser แล้วล่ะ เมื่อไหรจะเป็นมาตรฐานจริงซักที่น่ะ

  2. บน Safari 3.x jQuery หลายๆตัวก็ทำงานผิดพลาดครับ เห้อ… เหนื่อยจาย

Comments are closed.