滚动经典最新话题[prototype框架]下编写


Posted in Javascript onOctober 03, 2006

前天见到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>
Javascript 相关文章推荐
javascript 构造函数强制调用经验总结
Dec 02 Javascript
js+JQuery返回顶部功能如何实现
Dec 03 Javascript
jquery显示和隐藏div特效实例
Feb 27 Javascript
jQuery实现复选框批量选择与反选的方法
Jun 17 Javascript
jQuery获取与设置iframe高度的方法
Aug 01 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
Sep 05 Javascript
jquery中用jsonp实现搜索框功能
Oct 18 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
Dec 27 Javascript
Web前端框架bootstrap实战【第一次接触使用】
Dec 28 Javascript
五步轻松实现JavaScript HTML时钟效果
Mar 25 Javascript
JS脚本实现网页自动秒杀点击
Jan 11 Javascript
JS在if中的强制类型转换方式
Jul 15 Javascript
图片自动更新(说明)
Oct 02 #Javascript
在线游戏大家来找茬II
Sep 30 #Javascript
静态页面的值传递(三部曲)
Sep 25 #Javascript
关于Blog顶部的滚动导航条代码
Sep 25 #Javascript
初学prototype,发个JS接受URL参数的代码
Sep 25 #Javascript
浅谈JavaScript中面向对象技术的模拟
Sep 25 #Javascript
理解JavaScript中的事件
Sep 23 #Javascript
You might like
php设计模式 Template (模板模式)
2011/06/26 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
仿迅雷焦点广告效果(JQuery版)
2008/11/19 Javascript
JS window.opener返回父页面的应用
2009/10/24 Javascript
CCPry JS类库 代码
2009/10/30 Javascript
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
2015/11/15 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
vue router 通过路由来实现切换头部标题功能
2019/04/24 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
使用Filter过滤python中的日志输出的实现方法
2019/07/17 Python
原生python实现knn分类算法
2019/10/24 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
阿拉伯书店:Jamalon
2019/07/24 全球购物
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
历史系毕业生自荐信
2013/10/28 职场文书
董事长秘书职责
2014/01/31 职场文书
后备干部考察材料
2014/02/12 职场文书
《二泉映月》教学反思
2014/04/15 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书