PHP共享文库项目说明文档

1.footer.html: 页的“使用启航前必读”和“文库协议”并没有添加内容

 2._search.html : search form 由 search.php来处理搜索框中内容存到 $word 中

2.1<label> 标签为 input 元素定义标注(标记)。

label 元素不会向用户呈现任何特殊效果。不过,它为鼠标用户改进了可用性。如果您在 label 元素内点击文本,就会触发此控件。就是说,当用户选择该标签时(实际是单击label中的文本),浏览器就会自动将focus焦点转到和标签相关的表单控件上。<label> 标签的 for 属性应当与相关元素的 id 属性相同。实例带有两个输入字段和相关标记的简单 HTML 表单:<form>  <label for="male">Male</label>  <input type="radio" name="sex" id="male" />  <br />  <label for="female">Female</label>  <input type="radio" name="sex" id="female" /></form>

3.category.html:  文库分类,登陆注册按钮,文档上传工具条

引入js: jquery.js ,login.js,cookie.js

  send  parameter to the category.php  : kid=1

<a href="category.php?kid=1" class="fst"><span>专业资料</span></a><a href="course.php" class="fst"><span>课程</span></a><a href="user.php" class="fst"><span>我的文库</span></a><!--上传文档按钮-->

<p class="share-number"><a href="upload.php" class="up_files"></a>

<!--动态的数据--><div class="_hd"><b>项目分类</b></div><div class="_cd"><!--List--><?php echo $list;?></div><!--精品文档列表--> <?php echo $re_list;?><!--热门文集--><?php echo $hot_list;?><!--list_img--><?php echo $new_list;?>当行条动态变换样式: <div class = "inner"> <ul><li><a> </a></li></ul></div>

//jquery 识别标签添加css类     $(function($) {$(".inner li:eq(" + location.search.substr(-1, 1) + ")").addClass("current")})js 补充知识: 

JS中利用location.search在客户端获取URL参数location.search是从当前URL的?号开始的key=value字符串如:http://www.baidu.com/s?wd=baidu&cl=3它的search就是?wd=baidu&cl=3    location.search.substr(1).split("&")[index]如: location.search.substr(1).split("&")[0]可以返回第一个参数:wd=baidu如: location.search.split('?')[1]可以返回所有参数:wd=baidu&cl=3
stringObject.substr(start,length)
参数 描述
start 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
length 可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。


用javascript来接收url传过来的参数,js不会像php那样可以通过$_GET很容易的就可以得到,以下是通过用

<script type="text/javascript"> 
var id; 
function getid(){ 
var url=location.search; 
var Request = new Object(); 
if(url.indexOf("?")!=-1){ 
var str = url.substr(1) //去掉?号 get the substring from the second one .
strs = str.split("&"); 
for(var i=0;i<strs.length;i++){ 
Request[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]); 


id=Request["id"]; 
document.getElementById('td_fa').innerHTML=id + "页面信息"; 

</script> 


Jquery

eq() 方法将匹配元素集缩减值指定 index 上的一个。

语法

.eq(index)

参数 描述

index 

整数,指示元素的位置(最小为 0)。

如果是负数,则从集合中的最后一个元素往回计数。

详细说明

如果给定表示 DOM 元素集合的 jQuery 对象,.eq() 方法会用集合中的一个元素构造一个新的 jQuery 对象。所使用的 index 参数标示集合中元素的位置。


<?php include "../html/_footer.html"?> you'd better use require(" ") method


4.course.html   课程页面
   课程页中只有video.php中添加了视频

5.user.php 我的文库

6.forgetchange.html  包涵forget.js 
// 获取焦点和失去焦点的样式变化。 
blur() 
<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 
  $("input").focus(function(){
//change css style by js   css("key","value");
    $("input").css("background-color","#FFFFCC");
  });


  $("input").blur(function(){
    $("input").css("background-color","#D6D6FF");
  });
});
</script>
</head>
<body>
Enter your name: <input type="text" />
<p>请在上面的输入域中点击,使其获得焦点,然后在输入域外面点击,使其失去焦点。</p>
</body>
</html>

append() 方法在被选元素的结尾(仍然在内部)插入指定内容。
提示:append() 和 appendTo() 方法执行的任务相同。不同之处在于:内容的位置和选择器。
语法
$(selector).append(content)
参数 描述
content 必需。规定要插入的内容(可包含 HTML 标签)。
使用函数来附加内容
使用函数在指定元素的结尾插入内容。


foget.js 很好,是完整的客户端验证逻辑
7.找回密码: 确认账号 (forgetchange.html) —>安全验证(forgetsafe.html) --> 重置密码(forgetchange.html)
一个标签可以有多个类来改变样式。
<li class="mod-sub-list1 list1-active">
确认帐号
</li>


生成验证码图片:
<img src="checkcode.php" alt="验证码图片" title = "checkcode Picture" id ="check_code">
画出验证码
//刷新验证码图片,向php文件中传递参数   
  <a href="javascript:void(0)" οnclick="javascript:document.getElementById('check_code').src='checkcode.php?tm='+Math.random();">看不清?</a>
$code.=$char;  //add $char to the $code 
checkcode.php // 包涵话验证的文件include_once 'DB/ValidateCode.php' ,new Util_Caption对象


ValidateCode.php // 话验证码图片的php文件
numberabs ( mixed number)


返回参数 number 的绝对值。如果参数 number 是 float,则返回的类型也是float,否则返回 integer(因为 float 通常比integer 有更大的取值范围)。
例子 1. abs()
<?php $abs = abs(-4.2);// $abs = 4.2; (double/float) $abs2 = abs(5);// $abs2 = 5; (integer) $abs3 = abs(-5);// $abs3 = 5; (integer) ?>


arrayimagettfbbox ( int size, int angle, string fontfile, string text)


本函数计算并返回一个包围着 TrueType 文本范围的虚拟方框的像素大小。 
text
要度量的字符串。
size
像素单位的字体大小
fontfile
TrueType 字体文件的文件名(可以是 URL)。根据 PHP 所使用的 GD 库版本,可能尝试搜索那些不是以 '/' 开头的文件名并加上 '.ttf' 的后缀并搜索库定义的字体路径。
angle
text 将以角度而度量。 
imagettfbbox() 返回一个含有 8 个单元的数组表示了文本外框的四个角:
0 左下角 X 位置
1 坐下角 Y 位置
2 右下角 X 位置
3 右下角 Y 位置
4 右上角 X 位置
5 右上角 Y 位置
6 左上角 X 位置
7 左上角 Y 位置
这些点是相对于文本的而和角度无关,因此“左上角”指的是以水平方向看文字时其左上角。


画验证码用到的函数:
imagecolorallocate -- 为一幅图像分配颜色


int imagecolorallocate ( resource image, int red, int green, int blue)


imagecolorallocate() 返回一个标识符,代表了由给定的RGB 成分组成的颜色。image 参数是imagecreate() 函数的返回值。red,green 和blue 分别是所需要的颜色的红,绿,蓝成分。这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。imagecolorallocate() 必须被调用以创建每一种用在image 所代表的图像中的颜色。 
注: 第一个对 imagecolorallocate() 的调用填充背景色。


<?php // 背景设为红色 $background =imagecolorallocate($im,255, 0, 0); // 设定一些颜色 $white = imagecolorallocate($im,255, 255, 255); $black = imagecolorallocate($im,0, 0,0); // 十六进制方式 $white = imagecolorallocate($im,0xFF, 0xFF, 0xFF); $black = imagecolorallocate($im,0x00, 0x00, 0x00); ?>


intrand ( [int min, int max])


如果没有提供可选参数 min 和 max,rand() 返回 0 到RAND_MAX 之间的伪随机数。例如想要 5 到 15(包括 5 和 15)之间的随机数,用rand(5, 15)。


imagesetpixel -- 画一个单一像素
int imagesetpixel ( resource image, int x, int y, int color)


imagesetpixel() 在 image 图像中用 color 颜色在 x, y 坐标(图像左上角为 0, 0)上画一个点。







hexdec -- 十六进制转换为十进制

int hexdec ( string hex_string)


返回与 hex_string 参数所表示的十六进制数等值的的十进制数。hexdec() 将一个十六进制字符串转换为十进制数。所能转换的最大数值为 7fffffff,即十进制的 2147483647。
hexdec() 将遇到的所有非十六进制字符替换成0。这样,所有左边的零都被忽略,但右边的零会计入值中。 
例子 1. hexdec() 例子
<?php var_dump(hexdec("See")); var_dump(hexdec("ee")); // both print "int(238)" var_dump(hexdec("that")); var_dump(hexdec("a0")); // both print int(160) ?>
参见 dechex()。  


boolimagefilledrectangle ( resource $image ,int $x1 ,int $y1 ,int $x2 ,int $y2 ,int $color )
imagefilledrectangle() 在image 图像中画一个用 color 颜色填充了的矩形,其左上角坐标为x1,y1,右下角坐标为x2,y2。0, 0 是图像的最左上角。int $color
imageFilledRectangle($image, 0, 0, $width, $height, $back); ///填充背景 给相应变量赋值$back is int $color 


stringdirname ( string path)
给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。
在 Windows 中,斜线(/)和反斜线(\)都可以用作路径分隔符。在其它环境下是斜线(/)。


foreach ($codes as $v) ///逐个画字符


array imagettftext ( resource$image , float$size , float$angle , int$x , int$y , int$color , string$fontfile , string$text )


用 TrueType 字体向图像写入文本
说明


image 
图像资源。见 imagecreatetruecolor()。
size 
字体大小。根据 GD 版本不同,应该以像素大小指定(GD1)或点大小(GD2)。 
angle 
角度制表示的角度,0 度为从左向右读的文本。更高数值表示逆时针旋转。例如 90 度表示从下向上读的文本。 

由 x,y 所表示的坐标定义了第一个字符的基本点(大概是字符的左下角)。这和imagestring() 不同,其 x,y 定义了第一个字符的左上角。例如 "top left" 为 0, 0。

Y 坐标。它设定了字体基线的位置,不是字符的最底端。 
color 
颜色索引。使用负的颜色索引值具有关闭防锯齿的效果。见 imagecolorallocate()。
fontfile 
是想要使用的 TrueType 字体的路径。 根据 PHP 所使用的 GD 库的不同,当fontfile 没有以 / 开头时则 .ttf 将被加到文件名之后并且会在库定义字体路径中尝试搜索该文件名。当使用的 GD 库版本低于 2.0.18 时,一个空格字符 而不是分号将被用来作为不同字体文件的“路径分隔符”。


例子 1.dirname() 例子
<?php $path = "/etc/passwd"; $file = dirname ($path);// $file is set to "/etc" ?>


int count ( mixed var [, int mode])
返回 var 中的单元数目,通常是一个array(任何其它类型都只有一个单元)。 








8.home.html 



9.login.html Jquery 下的Ajax 技术 
Ajax的操作掌握
注册后 到reg.php 页面
html文件还只是表现层,没有实质的逻辑
<a target="_blank" href="../php/forgetpass.php">忘记密码?</a>
<a href="../php/reg.php" target="_blank">立即注册</a>




10.search.html 搜索结果页的布局,内嵌了许多php代码,包括操纵数据库

  userModel类是面向对象的编程
  userModel->username($row['uid']);
  search对象的属性: $search->numItems
  $search->numPages

mysql_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有

返回根据从结果集取得的行生成的数组,如果没有更多行则返回 false。

语法

mysql_fetch_array(data,array_type)
参数 描述
data 可选。规定规定要使用的数据指针。该数据指针是 mysql_query() 函数产生的结果。
array_type

可选。规定返回哪种结果。可能的值:

  • MYSQL_ASSOC - 关联数组
  • MYSQL_NUM - 数字数组
  • MYSQL_BOTH - 默认。同时产生关联和数字数组

提示和注释

注释:mysql_fetch_array() 是 mysql_fetch_row() 的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。

提示:有很重要的一点必须指出,用 mysql_fetch_array() 并不明显比用 mysql_fetch_row() 慢,而且还明显提供了更多的值。

注释:本函数返回的字段名是区分大小写的。

例子

<?php
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

$db_selected = mysql_select_db("test_db",$con);
$sql = "SELECT * from Person WHERE Lastname='Adams'";
$result = mysql_query($sql,$con);
print_r(mysql_fetch_array($result));

mysql_close($con);
?>

输出类似:

Array
(
[0] => Adams
[LastName] => Adams
[1] => John
[FirstName] => John
[2] => London
[City] => London
) 


<?php

while($row = mysql_fetch_array($result)){

$row is a array fetch from the database 

?>

<li>

<div  class="item">

<span class="ico <?php echo $row['style']?>"></span><a class="Title" href="view.php?fid=<?php echo $row["id"] ?>"><?php echo $row['name']?></a><b>2012-1-1</b>

</div>

<p class="label">

<?php echo $row['name_fu']?>

</p>

<div style="color: #666">

<p>

下载:<?php echo $row['downNum']?>次<i>|</i>浏览:<?php echo $row['scanNum']?>次<i>|</i>贡献者:<a><?php

$user=new userModel();

//dynamic data from the mysql database 

echo $user->username($row['uid']);

?></a>

</p>

</div>

</li>

<?php

}

?>

</ul>

<div class="pageInner" >

<div class="page-content" style="display: <?php if($search->numPages==1){echo 'none';}  ?>">


//$href是 $search  (extends Page.class.php ) return value 

<?php echo $href;?>

</div>

<span class="nums">找到相关文档约<?php echo $search->numItems;?>篇</span>





search页面中用到的Js代码:高亮搜索内容
<script>
$(function($) {
arry = [];
str = $(".SE").val();
str1 = str.toUpperCase();
str2 = str.toLowerCase();
for (var i = 0; i < str1.length; i++) {
arry.push(str1[i] + ' ');
};
for (var i = 0; i < str2.length; i++) {
arry.push(str2[i] + ' ');
};
$(".Title").textSearch(arry.join(""), {
markColor : '#C00'
});
$(".label").textSearch(arry.join(""), {
markColor : '#C00'
});
//标题更改
document.title = '文库搜索_' + str;
index=location.search.substr(-1,1)-1;
$(":radio:eq("+(+index)+")").attr('checked',true);
});
</script>

jQuery方法:textSearch()

js调用方法:$(“body”).textSearch(“插件”);//红色高亮标注body标签下所有的“插件”关键字

还可以通过class属性,id属性选择,如$(“.content”).textSearch(“插件”);

$(“#content”).textSearch(“插件”);

参数如下表:

参数默认值说明
divFlagtrue布尔型,true表示对字符串进行多关键字处理,false表示不处理,整个字符串看成1个关键字
divStr” “字符串,表示分割多个关键字的字符,默认为空格,如果divFlag为false,此参数将失效
markClass“”代码高亮的class类,默认为没有样式,如果设置样式,将覆盖默认的红色高亮颜色值
markColor“red”字符串,指高亮文字的颜色值,默认红色。markClass不为空,则此参数失效。
nullReporttrue布尔型,表示当搜索结果为空时,是否弹出提示信息。默认弹出。
callbackreturn false;回调函数,默认无效果。当存在搜索结果时执行。

说明:

1、高亮的文字的jQuery对象可以通过$(“span[rel='mark'])获取。

效果图:

js源码:

01 (function($){
02     $.fn.textSearch = function(str,options){
03 //jason格式定义变量        
var defaults = {
04             divFlag: true,
05             divStr: " ",
06             markClass: "",
07             markColor: "red",
08             nullReport: true,
09             callback: function(){
10                 return false;
11             }
12         };
13         var sets = $.extend({}, defaults, options || {}), clStr;
14         if(sets.markClass){
15             clStr = "class='"+sets.markClass+"'";
16         }else{
17             clStr = "style='color:"+sets.markColor+";'";
18         }
19  
20         //对前一次高亮处理的文字还原
21         $("span[rel='mark']").removeAttr("class").removeAttr("style").removeAttr("rel");
22  
23         //字符串正则表达式关键字转化
24         $.regTrim = function(s){
25             var imp = /[\^\.\\\|\(\)\*\+\-\$\[\]\?]/g;
26             var imp_c = {};
27             imp_c["^"] = "\\^";
28             imp_c["."] = "\\.";
29             imp_c["\\"] = "\\\\";
30             imp_c["|"] = "\\|";
31             imp_c["("] = "\\(";
32             imp_c[")"] = "\\)";
33             imp_c["*"] = "\\*";
34             imp_c["+"] = "\\+";
35             imp_c["-"] = "\\-";
36             imp_c["$"] = "\$";
37             imp_c["["] = "\\[";
38             imp_c["]"] = "\\]";
39             imp_c["?"] = "\\?";
40             s = s.replace(imp,function(o){
41                 return imp_c[o];
42             });
43             return s;
44         };
45         $(this).each(function(){
46             var t = $(this);
47             str = $.trim(str);
48             if(str === ""){
49                 alert("关键字为空");
50                 return false;
51             }else{
52                 //将关键字push到数组之中
53                 var arr = [];
54                 if(sets.divFlag){
55                     arr = str.split(sets.divStr);
56                 }else{
57                     arr.push(str);
58                 }
59             }
60             var v_html = t.html();
61             //删除注释
62             v_html = v_html.replace(/<!--(?:.*)\-->/g,"");
63  
64             //将HTML代码支离为HTML片段和文字片段,其中文字片段用于正则替换处理,而HTML片段置之不理
65             var tags = /[^<>]+|<(\/?)([A-Za-z]+)([^<>]*)>/g;
66             var a = v_html.match(tags), test = 0;
67             $.each(a, function(i, c){
68                 if(!/<(?:.|\s)*?>/.test(c)){//非标签
69                     //开始执行替换
70                     $.each(arr,function(index, con){
71                         if(con === ""){return;}
72                         var reg = new RegExp($.regTrim(con), "g");
73                         if(reg.test(c)){
74                             //正则替换
75                             c = c.replace(reg,"♂"+con+"♀");
76                             test = 1;
77                         }
78                     });
79                     c = c.replace(/♂/g,"<span rel='mark' "+clStr+">").replace(/♀/g,"</span>");
80                     a[i] = c;
81                 }
82             });
83             //将支离数组重新组成字符串
84             var new_html = a.join("");
85  
86             $(this).html(new_html);
87  
88             if(test === 0 && sets.nullReport){
89                 alert("没有搜索结果");
90                 return false;
91             }
92  
93             //执行回调函数
94             sets.callback();
95         });
96     };
97 })(jQuery);




11.uplaod.html 
包含了upload.js
显示登陆信息:<?php echo htmlspecialchars($result['user']) ?>


//显示级别 upload 处理中 使用到了upload.swf  flash 写的代码,在html中嵌入flash

<?php echo $result['lv'] ?>级(<?php echo $result['empirical'] ?>)


<div class="flash_container">

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"  id="WKFlashUploader" width="100%" height="100%" align="left">

<param name="bgcolor" value="#FD9526">

<param name="wmode" value="opaque">

<param name="allowfullscreen" value="false">

<param name="allowscriptaccess" value="always">

<param name="movie" value="upfile.swf">

<param name="flashVars" value="filter=*.doc;*.pdf&session_id=<?php echo session_id(); ?>" />

<embed width="100%" height="100%" ver="10.0.0" flashvars="filter=*.doc;*.pdf&session_id=<?php echo session_id(); ?>" errormessage="Please download the newest flash player." bgcolor="#FD9526" wmode="opaque" align="left" allowfullscreen="false" allowscriptaccess="always" src="upfile.swf" name="WKFlashUploader" type="application/x-shockwave-flash" >

</object>

</div>

<!--上传文档部分使用flash 操作-->


12.user.html
用户信息都是动态的,嵌入php脚本

<!--用户信息-->
<div class="user-card">
<div style="margin-bottom: 5px">
<strong><?php echo $info["user"]?></strong>
</div>
<p>
<?php echo $info["title"]?>&nbsp;&nbsp;<?php echo $info["lv"]?>级
</p>

//等级不同,对应不同的头像图片。

<div style="margin:10px 0;width: 124px;height: 124px;"><img src="../html/image/lv/<?php echo $info["lv"]?>.jpg"/></div>
<p>
经验:<span class="c-orange"><?php echo $info["empirical"]?></span>/<?php echo $limit?>
</p>
<div class="user-exp">
<span style="width: <?php echo $length?>px"> </span>
</div>
</div>




<h3>基本信息</h3>
<span class="title-bg"></span>
</div>
<div class="bd">
<div class="data">
<ul>

<li>

等级

<br/>

<span class="c-orange"><?php echo $info["lv"]?></span>

</li>

<li>

经验

<br/>

<span class="c-orange"><?php echo $info["empirical"]?></span>

</li>

<li>

财富值

<br/>

<span class="c-orange"><?php echo $info["wealth"]?></span>

</li>

<li>

文档数

<br/>

<span class="c-orange"><?php echo $info["doc"]?></span>

</li>

<li style="border: 0">

文档被下载

<br/>

<span class="c-orange"><?php echo $downNum?></span>

</li>

</ul> 



Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。

void 操作符用法格式如下:
1. javascript:void (expression)
2. javascript:void expression

expression 是一个要计算的 Javascript 标准的表达式。表达式外侧的圆括号是选的,但是写上去是一个好习惯。

你以使用 void 操作符指定超级链接。表达式会被计算但是不会当前文档处装入任何内容。

下面的代码创建了一个超级链接,当用户以后不会发生任何事。当用户链接时,void(0) 计算为 0,但 Javascript 上没有任何效果。

<A HREF="javascript:void(0)">单此处什么也不会发生</A>

下面的代码创建了一个超级链接,用户单时会提交表单。
<A HREF="javascript:void(document.form.submit())">
单此处提交表单</A>
a href=#与 a href=javascript:void(0) 的区别

 链接的几种办法

#包含了一个位置信息

默认的锚是#top 也就是网页的上端

而javascript:void(0)   仅仅表示一个死链接
这就是为什么有的时候页面很长浏览链接明明是#跳动到了页首,而javascript:void(0) 则不是如此,所以调用脚本的时候最好用void(0)

链接的几种办法
1.window.open(''url'')

2.用自定义函数
         <script>
         function openWin(tag,obj)
         {
             obj.target="_blank";
             obj.href = "Web/Substation/Substation.aspx?stationno="+tag;
             obj.click();
         }
        </script>

<a href="javascript:void(0)" οnclick="openWin(3,this)">株洲</a>

使用javascript的时候,通常我们会通过类似:<a href=http://www.webyi.com/wschool/program/javascript/20091231/"#" οnclick="javascript:方法">提交 的方式,通过一个伪链接来调用javascript方法。这种方法有一个问题是:虽然点击该链接的时候不会跳转页面,但是滚动条会往上滚,解决的办法是返 回一个false。
如下所示:

<a href= http://www.webyi.com/wschool/program/javascript/20091231/"#" οnclick="javascript:方法;return false;">提交
<a href= http://www.webyi.com/wschool/program/javascript/20091231/"javascript:void(0)" οnclick="javascript:方法;return false;">提交
<a href= http://www.webyi.com/wschool/program/javascript/20091231/"#this" οnclick="javascript:方法">xx

  #包含了一个位置信息默认的锚点是#top 也就是网页的上端,而javascript:void(0) 仅仅表示一个死链接。 这就是为什么有的时候页面很长浏览链接明明是#可是跳动到了页首,而javascript:void(0) 则不是如此所以调用脚本的时候最好用void(0)。 

   所以我们在做页面无刷新时用void(0)比较多,一般是Ajax,看一下Ajax的web页面的话,一般都会看到有很多的void(0),所以在使用void(0)之前,最好先想一想这个页面是否需要整体刷新。



13.控制video的控件
html页面下播放视频 酷! 

<script type='text/javascript'>

jwplayer('player_7333').setup({

file : "../file/video/PHP1.mp4",

width : "925",

height : "500",

image : "../file/video/22.jpg",

});

</script>

一、JW Player是什么?

简单地说,JW Player是一种基于flash的交互式网页媒体播放器。问世于2005年,当时仍名不经传的YouTube首次采用的播放器就是JW Player。官方网址:http://www.longtailvideo.com/

JW Player含:FLV Player、WMV Player、Image Rotator和Desktop Player四种,除了最后一种实为桌面播放器,其他三种都是网页播放器。

本篇内容仅限FLV Player。

二、JW FLV Media Player简介

JW FLV Media Player可播放Adobe Flash Player所支持的媒体,具体包括:FLV、MP4、MP3、AAC、JPG、PNG和GIF等,还支持RTMP、HTTP、实时视频流、各种播放清单 格式、灵活的设置和广泛的javascript API。此外它还提供多种外观、功能性插件来扩展播放器,以便我们可以分享、推荐、搜索、分析甚至广告投放。

三、安装

JW Player可安装在网络空间,我从未如此运用过,而是上传到我的网盘,因此本篇的介绍也是基于此种情况,而列为看官当然懂得如何触类旁通。另外,我们一定要选择可以直链的网盘上传,何谓“直链”,即外链地址以完整的文件名为结尾(含.后缀名),如http://www.xxx.com/xxx.mp3

1、首先到官网下载源文件,下载地址:http://www.longtailvideo.com/players/jw-flv-player/

下载来的文件是zip压缩包,解压之后可以看到内含以下文件:

2、将player.swf和swfobject.js这两个文件上传到网盘(建议在网盘上为它们单独建立一个文件夹,本篇示例文件夹JW Player),安装即告完毕

四、使用设置向导

官网特别提供一个设置页面http://www.longtailvideo.com/support/jw-player-setup-wizard,可以在网页上提交、设置播放器参数,生成嵌入代码,把生成的代码稍作修正后粘贴到博客或空间即可。

设置向导提供两种代码:默认的Swfobject 1.5 Code(即JavaScripting)和Embed Code。我没有机会运用Swfobject 1.5 Code,因此本篇只介绍Embed Code。

前面我提到过生成的代码要稍作修正:为了方便在网页小窗口浏览生成的代码,官网给出 的代码是按各项参数分行了的,如果复制后就直接粘贴,可能会使播放器不能正常工作,我建议先把代码复制到“记事本”后,删除段落标记,注意每项参数之间还 要保留一个空格位,再复制到空间或博客。

Embed 代码的格式一般是这样:<embed 参数1=”参数值” 参数2=”参数值” ……参数n=”参数值”></embed>。

关于Embed Code各项参数的详细介绍,请参阅Adobe官网:http://kb2.adobe.com/cps/127/tn_12701.html。这个话题不小,值得另开一篇介绍文章。

1、设置向导概览

(点击打开大图)

JW Player设置非常灵活,代价就是参数非常多,搞清楚参数的意义很重要,官网也提供相关资料供我们查阅:http://developer.longtailvideo.com/trac

特别注意:如果你的网址参数值带有“?”、“=”和“&”这三个字符,必须先转换再填写,如下:

?”转换为“%3F
=转换为“%3D
&转换为“%26

例如:原网址为:getplaylist.php?id=123&type=flv,转换后为:getplaylist.php%3Fid%3D123%26type%3Dflv

2、选择模板

官网为我们提供了多达21种模板,每选择一种模板,下面的参数值和播放器预览将自动 更新。虽然大部分模板今后我们恐怕几乎用不上,我还是建议新手一定要把每一种模板都点击一下,再好好体会下面的参数值,这既有助于我们领会众多参数所代表 的含义,还可以在播放器预览直接看到参数所体现的效果。

模板其实就是一件半成品,熟悉模板还可以让我们快速而准确地挑选最接近成品的模板,善用模板将大大提高效率。

需要多费口舌的是带播放清单模板“flvplayer with an rss playlist”,这个留待后面谈flie参数时再详细介绍。

3、嵌入参数

嵌入参数有三个内容:

*swf来源:填写我们之前上传到网盘player.swf的直链地址
*播放器高度:填写pix(像素)值或浏览窗口百分比
*播放器宽度:填写pix(像素)值或浏览窗口百分比

如果高度和宽度填写的是百分比,那么播放器的大小是弹性的,它将随浏览器窗口和所在网页留给播放器窗口的大小而变化。

4、媒体文件属性参数

*媒体作者:填写媒体作者名字
*媒体描述:媒体的文字描述
*字幕:XML字幕文件的链接地址(XML字幕文件也是一个大话题,将另文介绍)
*持续时间:媒体播放的持续时间(秒)
*媒体文件:媒体文件或XML播放清单的链接地址

关于JW Player可支持的媒体格式详情,请参阅:http://developer.longtailvideo.com/trac/wiki/FlashFormats。大致分类:单文件媒体(视频:FLV、MP4和AAC音频;音频;MP3;图像:JPG、GIF和PNG),YouTube视频,Livestream.com视频,HTTP流媒体,RTMP流媒体,XML播放清单。

我们要面对的模板其实可以归于两大类:一是播放单文件媒体;二是播放多文件媒体。单 文件媒体好办,直接在参数file告诉播放器媒体文件的所在地址既可。如果要播放多文件媒体,那就要把所有媒体文件按顺序组织起来,并保存为XML文件 (可以用“记事本”打开和编辑) ,这就是XML播放清单,而file参数就填上这个XML文件的链接地址。JW Player支持的播放清单格式有:XSPF、RSS(itunes、media)、ASX、ATOM。

关于XML播放清单见我的另一篇介绍文章《JW Player之XML播放清单简介》

请注意,JW Player是以文件后缀名来判断媒体类别,如果播放器没有找到合适的后缀名,它将假定载入的是播放清单。

*预览图像:预览图片的链接地址

何谓“预览图像”?当播放器停止播放时,它显示的图像。

外部链接地址:当填写此项参数值后,播放器的控制面板将多出一个链接按钮,点击可以打开外部链接网页。请看截图:

*开始时间:定位从第几秒开始播发,仅对HTTP / RTMP流媒体有效。
*媒体标题:如果你将播放器设置成带播放清单(Playlist),媒体标题将出现在播放清单

// jquery 写目录动画
<script type="text/javascript">
jwplayer.key = "sEmgMZhfwrnchEyTJvgDEQiYBF1kOeT2wYQ8zw==";
</script>








<script type="text/javascript" src="../html/jwplayer/jwplayer.js"></script>




  <script type="text/javascript" charset="utf-8">
var open = true;
$(function($) {
$(".mulu").click(function() {
if (open) {
$(".con").animate({
width : "250px"
});
open = false;
} else {
$(".con").animate({
width : "0px"
});
open = true;
}
})
});




</script>




14.view.html 预览文档的界面
15.
16.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值