|
前天见到sin100看到的那个日本网站的滚动,挖掘后原来是使用Ajax读取xml后显示出来的。
就弄了这个滚动经典最新话题的供朋友参考参考。 范例使用了prototype.js的ajax轻便型框架。 因为远程调用了 prototype.js 这个文件,测试的朋友请耐心等候一下下。
经典不允许远程调用别的站点的js文件,所以还请多一部操作,复制到本地运行查看结果。 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="gb2312" > <head> <meta http-equiv="content-type" content="text/html; charset=gb2312" /> <meta name="author" content="Smiling Dolphin" /> <meta name="keywords" content="design, css, cascading, style, sheets, xhtml, graphic design, w3c, web standards, visual, display, java, javascript, c++, php, jsp, asp, py, pl" /> <meta name="description" content="my favorites language." /> <meta name="robots" content="all" /> <title>Dolphin Document</title>
<style type="text/css" title="currentStyle" media="screen"> #scroll{width:99%;height:25px;border:1px solid #2BBB00;background:#E7FFE0;overflow:hidden;} #scrollFrame,#scrollFrame2{line-height:25px;font-size:13px; word-break:keep-all;line-break:normal; white-space:nowrap;} #scrollFrame span,#scrollFrame2 span{display:inline;margin-right:20px;} </style> <script src="http://prototype.conio.net/dist/prototype-1.4.0.js" type="text/javascript"></script> </head> <body> <div id="scroll"> <div id="scrollFrame"></div> <div id="scrollFrame2"></div> </div> <script language="javascript" type="text/javascript">
var Ticker = Class.create(); Ticker.prototype = { initialize: function() { try{ this.scrollType = "normal"; this.m_scroll = $(arguments[0]); this.m_scroll_1 = $(arguments[1]); this.m_scroll_2 = $(arguments[2]); this.m_speed = (arguments[3][0])?arguments[3][0]:3; this.m_request = (arguments[3][1])?arguments[3][1]:60; this.m_loop = (arguments[3][2])?arguments[3][2]:0.05; this.m_url = (arguments[3][3])?arguments[3][3]:'http://bbs.blueidea.com/rss.php?fid=1'; }catch(e){} finally{} Event.observe(this.m_scroll, 'mouseover', this.mouseover.bindAsEventListener(this), false); Event.observe(this.m_scroll, 'mouseout', this.mouseout.bindAsEventListener(this), false); new PeriodicalExecuter(this.scroll.bindAsEventListener(this), this.m_loop); new PeriodicalExecuter(this.load.bindAsEventListener(this), this.m_request); this.load(); }, load:function(){ var request = new Ajax.Request( this.m_url, { method: 'post', onSuccess: this.update.bindAsEventListener(this), onFailure: false, on304: false } ); }, update:function(request){ var items = request.responseXML.getElementsByTagName("item"); for(var i=0;i<items.length;i++){
var title = items[i].childNodes[0].childNodes[0].nodeValue; var link = items[i].childNodes[1].childNodes[0].nodeValue; var description = items[i].childNodes[2].childNodes[0].nodeValue; var author = items[i].childNodes[4].childNodes[0].nodeValue; this.m_scroll_1.innerHTML += "<span><a href=\""+link+"\" title=\""+author+":\r\n"+description+"\">"+i+":"+title+"</a></span>"; } this.m_scroll_2.innerHTML = this.m_scroll_1.innerHTML; }, scroll:function(event){ switch(this.scrollType){ case "slow": if(this.m_scroll_2.offsetWidth-this.m_scroll.scrollLeft<=0){ this.m_scroll.scrollLeft -= this.m_scroll_1.offsetWidth; }else{ this.m_scroll.scrollLeft++; } break; case "normal": default: if(this.m_scroll_2.offsetWidth-this.m_scroll.scrollLeft<=0){ this.m_scroll.scrollLeft -= this.m_scroll_1.offsetWidth; }else{ this.m_scroll.scrollLeft+=3; } break; } }, mouseover:function(){ this.scrollType = 'slow'; return false; }, mouseout:function(){ this.scrollType = 'normal'; return false; } } ticker1 = new Ticker("scroll","scrollFrame","scrollFrame2",[3,60,0.05,'http://bbs.blueidea.com/rss.php?fid=1']);
</script>
</body> </html>
|
|