`
awfwxf
  • 浏览: 68486 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

supesite系统视频播放功能的分析及设置默认打开页面播放

阅读更多
最近做的一个php项目需求中有视频这个频道,于是研究了一下supesite,不过它是在资讯中可以插入多个视频,点击后才能播放,同时又能再次隐藏。于是看了一下代码.记录如下:

分析发现,当我们发布一篇含有视频的新闻时,在资讯查看页面(news.view.html.php)源文件里显示如下效果:


<div id="article_body">
 
<P>百县视频资讯测试喽百县视频资讯测试喽</P>
<P><BR>Flash: <KBD class=showflash title=http://player.youku.com/player.php/sid/XMTM4OTAzNjUy/v.swf>http://player.youku.com/player.php/sid/XMTM4OTAzNjUy/v.swf</KBD><BR></P></div>
</div> 


但是直接从代码上分析怎么会产生那种效果呢?答案就出在class=showvideo里,我们可以先在template/css/style.css里找到showvideo的样式如下:

#articlebody kbd.showvideo{     
    font: 1em Arial, Helvetica, sans-serif;     
    cursor: pointer;     
   text-decoration: underline;     
}   


还有一个就是最关键的地方: addMediaAction('articlebody');这个JS函数的用途就是将articlebody容器里的一些方法赋予一些动作。接着找到include/js/common.js,里面有如下的代码是控制这个效果的。


function getbyid(id) {
if (document.getElementById) {
  return document.getElementById(id);
} else if (document.all) {
  return document.all[id];
} else if (document.layers) {
  return document.layers[id];
} else {
  return null;
}
}
//显示隐藏媒体
function addMediaAction(div) {
var thediv = getbyid(div);
if(thediv) {
  var medias = thediv.getElementsByTagName('kbd');
  if(medias) {
   for (i=0;i<medias.length;i++) {
    if(medias[i].className=='showvideo' || medias[i].className=='showflash'|| medias[i].className=='showreal') {
     medias[i].onclick = function() {showmedia(this,400,400)};
    }
   }
  }
}
}
function showmedia(Obj, mWidth, mHeight) {
var mediaStr, smFile;
if ( Obj.tagName.toLowerCase()=='a' ) { smFile = Obj.href; } else { smFile = Obj.title; }
var smFileType = Obj.className.toLowerCase();
switch(smFileType){
  case "showflash":
   mediaStr="<p style='text-align: right; margin: 0.3em 0; width: 520px;'>[<a href='"+smFile+"' target='_blank'>全屏观看</a>]</p><object codeBase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='520' height='390'><param name='movie' value='"+smFile+"'><param name='quality' value='high'><param name='AllowScriptAccess' value='never'><embed src='"+smFile+"' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width='520' height='390'></embed></OBJECT>";
   break;
  case "showvideo":
   mediaStr="<object width='520' classid='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6'><param name='url' value='"+smFile+"' /><embed width='520' type='application/x-mplayer2' src='"+smFile+"'></embed></object>";
   break;
  case "showreal":
   mediaStr="<object classid='clsid:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA' width='520' height='390' id='RealMoviePlayer' border='0'><param name='_ExtentX' value='13229'><param name='_ExtentY' value='1058'><param name='controls' value='ImageWindow,controlpanel'><param name='AUTOSTART' value='1'><param name='CONSOLE' value='_master'><param name='SRC' value='"+smFile+"'><EMBED SRC='"+smFile+"' WIDTH='520' type='audio/x-pn-realaudio-plugin'  HEIGHT='390' NOJAVA='true' CONTROLS='ImageWindow,controlpanel' AUTOSTART='true' REGION='newsregion' CONSOLE='one'></EMBED></object>";
}

var mediaDiv = document.getElementById(escape(smFile.toLowerCase()));

if (mediaDiv) {
  Obj.parentNode.removeChild(mediaDiv);
} else {
  mediaDiv = document.createElement("div");
  mediaDiv.style.cssText = "text-align:center;text-indent:0"; 
  mediaDiv.id = escape(smFile.toLowerCase());
  mediaDiv.innerHTML = mediaStr;
  Obj.parentNode.insertBefore(mediaDiv,Obj.nextSibling);
}
return false;
}

从上面我们可以看出,当系统运行addMediaAction('articlebody'); 时,首先JS会循环articlebody容器内的所有以KBD开头的语句,再根据视频播放的模式不同调用不同的方法.播放模式包含showflash,showvideo,showreal。然后开始调用showmedia函数,从 if ( Obj.tagName.toLowerCase()=='a' ) { smFile = Obj.href; } else { smFile = Obj.title; }这一行我们就可以看出来,当我们点击视频标题(如aaaaaaaaaaa)的时候,JS会通过点击的对象获取title(http://player.youku.com/player.php/sid/XMTM4OTAzNjUy/v.swf)作为视频播放的地址,串接出视频播放器代码并创建播放容器显示出来。反之则将播放容器通过removeChild移除。


*如果想让插入的视频或 FLASH 直接播放,下面的修改则可以设置为默认直接播放。

将下面这段:

//显示隐藏媒体
function addMediaAction(div) { 
var thediv = getbyid(div); 
if(thediv) {  
var medias = thediv.getElementsByTagName('kbd');  
if(medias) {   
for (i=0;i<medias.length;i++) {   
 if(medias[i].className=='showvideo' || medias[i].className=='showflash'|| medias[i].className=='showreal') { 
    medias[i].onclick = function() {showmedia(this,400,400)};    }   
}  
} 
}
}



修改为
//显示隐藏媒体
function addMediaAction(div) { 
var thediv = getbyid(div); 
if(thediv) {  
var medias = thediv.getElementsByTagName('kbd');  
if(medias) {  
 for (i=0;i<medias.length;i++) {   
 if(medias[i].className=='showvideo' || medias[i].className=='showflash'|| medias[i].className=='showreal') {
     medias[i].onclick = function() {
       showmedia(this,400,400)
    };    
       showmedia(medias[i],400,400);    
   }   
   }  
  } 
}
}

也就是在for循环中加上showmedia(medias[i],400,400);这句调用就可以了~!


希望能帮助到需要的朋友~~!
1
0
分享到:
评论

相关推荐

    SupeSite主题管理功能介绍

    详细介绍了SupeSite主题管理这一功能的使用方法。

    supesite详细文本教程

    包括:supesite使用手册 supesite文件,目录说明 supesite建站常用代码

    SupeSite 7.0 用户手册

    SupeSite 是一套独立的内容管理系统(CMS),并且拥有强大对 Discuz! 论坛信息和 UCenter Home 个人空间信息聚合的功能。为站长提供了一个创新的社区门户解决方案。通过 SupeSite 软件,社区论坛相关内容可以完成...

    SupeSite6.0.1X-Space4.0.1GBK.zip

    通过安装使用SupeSite/X-Space,网站建设者可以轻松、迅速和高效的构建拥有高度Web2.0特性的社区门户,为站点的会员提供包含日志(博客)、影音视频(播客)、群组(圈子)、相册图片、商品买卖、软件分享、书签收藏等在内...

    SupeSite的资讯发布及资讯管理

    本教程主要为大家讲解SupeSite的资讯是如何发布的,以及SupeSite的资讯该怎么样去管理。

    SupeSite7.5用户手册

    SupeSite7.5用户手册 参考 SupeSite7.5用户手册 参考 SupeSite7.5用户手册 参考

    SupeSite7.0_SC_GBK

    SupeSite 信息发布系统 PHP源代码

    SupeSite7.5数据调用模块参数详解

    模块功能是 SupeSite 系统的一个亮点,通过该功能您可以随心所欲的打造您需要的模板,什么地方显示什么模块,调用什么内容,如何样的风格,尽在您的掌握。 在模块管理中,通过选择现有的模板代码,根据自己的需要,...

    SupeSite v7.0 简体中文 UTF-8.rar

    数据调用完全向导化、模块化、缓存化,完全可以满足页面中不同数据的调用显示,并自动拥有高效的缓存功能,大大降低服务器的负载,提高站点访问速度; 全面聚合Discuz!论坛数据 可以实现指定Discuz!板块、特定帖子...

    SupeSite中个人空间管理分类的使用

    详细为大家介绍了SupeSite中个人空间管理分类这一功能的具体使用。

    SupeSite v7.0 简体中文 GBK.rar

    数据调用完全向导化、模块化、缓存化,完全可以满足页面中不同数据的调用显示,并自动拥有高效的缓存功能,大大降低服务器的负载,提高站点访问速度; 全面聚合Discuz!论坛数据 可以实现指定Discuz!板块、特定帖子...

    supesite开发文档.pdf

    supesite开发文档.pdf

    supesite 二次开发手册

    supesite 二次开发手册 SupeSite模板开发必备

    supesite7.5 采集 所有CSDN下载的采集工具打包汇总

    supesite7.5 采集supesite7.5 采集supesite7.5 采集supesite7.5 采集supesite7.5 采集

    SupeV v1.0.1 简体中文 GBK.zip

    SupeV是我们开发的一套视频播客系统,基本上囊括了现阶段主流视频网站所拥有的全部功能,如视频的上传、播放、分享等应用,此外还包括用户的博客空间、个人专辑、最新最热关注等增加用户体验的细节功能。此外,SupeV...

    Supesite7.5饮食健康网模板[基于supesite官方模板修改而成]

    Supesite7.5饮食健康网模板[基于supesite官方模板修改而成] 演示地址:http://www.yinshijiankang.com 给你一个健康向上的视觉享受,完全基于supesite官方模板修改而成,兼容性百分百,无任何视觉上的显示误差!

    supeSite 用户手册

    supeSite 用户手册supeSite 用户手册supeSite 用户手册supeSite 用户手册supeSite 用户手册supeSite 用户手册supeSite 用户手册supeSite 用户手册supeSite 用户手册supeSite 用户手册

    SupeSite产品详细介绍

    详细的介绍了SupeSite是什么,以及SupeSite有哪些特殊的功能。

    SupeSite7.5 仿站长网模板风格

    SupeSite7.5 仿站长网模板风格 演示 http://www.uuftp.com/news

    SupeSite7.5_SC_GBK

    功能包括:资讯管理、资讯发布、资讯审核、资讯分类、资讯字段自定义等,让网站能够更...资讯权限与用户组权限相结合,站长可以将资讯的发布、管理、审核等权限设置于不同的用户组,让指定的用户组拥有资讯管理功能。

Global site tag (gtag.js) - Google Analytics