【分享】非IE浏览器对 MARQUEE 的支持
MARQUEE 元素,就是著名的跑马灯,呃,,也可以说它实现了著名的跑马灯效果。省去我们很多的麻烦,它不属于W3C规范中的元素,最初由IE2.0引入,是微软发明的IE浏览器特有的元素,它可以用来创建一个文字滚动区域,并提供了一些特有的属性、方法及事件。
大概因为它看起来确实不错,所以目前所有浏览器都开始支持 MARQUEE 元素。但是具体的实现方式,估计都有不同。
Firefox中marquee对Date对象有依赖
<style>
div {
width: 200px;
background: #DDD;
}
</style>
<script>
Date = null;
</script>
<div>
<marquee behavior="alternate">TEXT</marquee>
</div>在上面的代码中,我将 Date对象置成了空。
打开浏览器,运行页面,”TEXT” 文字在除了Firefox 之外的浏览器之外都跑来跑去的,在 Firefox 中,压根没有看到 ”TEXT” 的影子。将Date=null;去掉,恢复正常。
看来,在 Firefox 里,MARQUEE 的实现和 Date 对象是有关系的。可能 MARQUEE 在Firefox里不是内置的HTML元素,是别的元素加JS代码模拟的也说不行。
Webkit浏览器中 MARQUEE 元素和它的 overflow 值
<style> div { width: 200px; background: #DDD; } marquee { overflow:hidden; }</style><div id="d1"> <marquee behavior="alternate">TEXT</marquee></div>
<style> div { width: 200px; background: #DDD; } #d2 { overflow: -webkit-marquee; }</style><div id="d1"> <div id="d2" behavior="alternate">TEXT</div></div>
<style> div { width:200px; background:#DDD; }</style><div id="d1"><marquee id="m1" behavior="alternate">111</marquee></div><button id="b">Click</button><div id="d2"><script> var a = Date.now; Date.now = null; document.getElementById("b").onclick = function () { Date.now = a; document.getElementById("d2").innerHTML = '<marquee id="m2">222</marquee>'; }</script></div>
[解决办法]
http://mxr.mozilla.org/firefox/source/layout/style/xbl-marquee/xbl-marquee.xml