jsp嵌入视频播放功能的总结(弹窗)
今天做弹窗网页播放视频的功能,本来以为很简单,没想到还是遇到了很多问题。基础不扎实,罪过罪过。记录一下,忘记了就回来看看。
网页嵌套视频播放功能,第一反应想到的是<video>标签。但是主要是用ie8,ie9,同时要兼容ie10和ie11。由于ie把不支持html5,video标签无法用,所以就用了window media player 插件(内容见下面代码,有贴出)。
第一个问题:
因为需要注意弹窗播放,js弹窗方法开始用的window.open(),get方式传值。结果悲剧了,视频无法播放。后来发现是因为参数(阿里云获取的视频url)传了一部分,没有完全传过去。怀疑是超过了get能够传参的长度,于是我把url的前半部分去掉,来验证下。结果发现用短的参数还是无法完整传过去,很是纠结。最后仔细看了一下,原来url中有&符号,get方式识别成两个参数了,导致无法正确传递。而windo.open()貌似只能用get方式传参(也可能有我不知道的方法),所以只能换了window.showModalDialog来做弹窗,问题解决。
第二个问题:
在ie11上,window media player 无法正常播放。于是ie11,我采用的<video>标签(网上很多人说可以让ie8兼容<video>,采用的方法都是添加js,创建video标签。我试了很多方式都不行,不知道问题出在哪里)。所以,写了一段ie版本检测的js(内容见下面代码,有贴出)。解决了ie11的弹窗播放视频的功能。
imageCaseDetail.jsp:
判断ie版本,如果是ie11,就用<video>标签
<pre name="code" class="html"><script type="text/javascript">
getBrowserVersion();
function getBrowserVersion() {//ie版本检测
var ieVersiuon;
var userAgent = navigator.userAgent.toLowerCase();
if (userAgent.match(/msie ([d.]+)/) != null) {//ie6--ie9
uaMatch = userAgent.match(/msie ([d.]+)/);
return "IE" + uaMatch[1];
} else if (userAgent.match(/(trident)/([w.]+)/)) {
uaMatch = userAgent.match(/trident/([w.]+)/);
switch (uaMatch[1]) {
case "4.0":
ieVersiuon = "ie8";
break;
case "5.0":
ieVersiuon = "ie9";
break;
case "6.0":
ieVersiuon = "ie10";
break;
case "7.0":
ieVersiuon = "ie11";
break;//ie11
default:
return "undefined";
}
}
ifie11(ieVersiuon);
}
function ifie11(ieVersiuon) {
if (ieVersiuon == "ie11") {
<%isIE11 = "1";%>
}
}
</script>
<body>
<%
if ("1".equals(isIE11)) {
%>
<div style="float:left;width:12%;margin-top:15px;"
id="videoplay1" class="divvideo">
<input type="button" value="点击查看"
style="width:128px;height:100px;"
onclick="openVideoIE11("${imgCheck.ossUuid }") ">
<div class="labeltxt">视频${index.index+1 }</div>
</div>
<%
} else {
%>
<div style="float:left;width:12%;margin-top:15px;"
id="videoplay1" class="divvideo">
<input type="button" value="点击查看"
style="width:128px;height:100px;"
onclick="openVideo("${imgCheck.ossUuid }") ">
<div class="labeltxt">视频${index.index+1 }</div>
</div>
<%
}
%>
</body>
imageCaseDetail.js
function openVideo(ossUuid){//跳转window media player页面
var paramObj = {
ossUuid : ossUuid
};
var rtnObj = window
.showModalDialog(contextRootPath + "/msplatform/pages/video/mobileVideoFrame.jsp", paramObj,
"dialogWidth:1280px;dialogHeight:720px;scroll:no;status:no;center:yes");
}
function openVideoIE11(ossUuid){//video标签页面
var paramObj = {
ossUuid : ossUuid
};
var rtnObj = window
.showModalDialog(contextRootPath + "/msplatform/pages/video/mobileVideoFrameIE11.jsp", paramObj,
"dialogWidth:800px;dialogHeight:600px;scroll:no;status:no;center:yes");
}
mobileVideoFrame.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ include file="/msplatform/pages/common/meta.jsp"%>
<%@ include file="/msplatform/pages/common/taglibs.jsp"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<link href = "${ctx }/msplatform/css/css.css" rel = "stylesheet" type = "text/css" />
<link rel = "stylesheet" href = "${ctx }/msplatform/css/zTreeStyle/zTreeStyle.css" type="text/css"/>
<link rel = "stylesheet" href = "${ctx }/msplatform/css/replay/replay.css" type="text/css"/>
<script src="${ctx}/msplatform/js/common/jquery-1.9.1.min.js" type="text/javascript"></script>
<script type="text/javascript" src="${ctx}/msplatform/My97DatePicker/WdatePicker.js"></script>
<script type="text/javascript" src="${ctx}/msplatform/js/replay/mobileReplay.js"></script>
</head>
<body style="padding:2px; position:relative;">
<div id = "window" style="float:left">
<object id="TB_PlayBack1" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
<param NAME="AutoStart" VALUE="-1">
<!--是否自动播放-->
<param NAME="Balance" VALUE="0">
<!--调整左右声道平衡,同上面旧播放器代码-->
<param name="enabled" value="-1">
<!--播放器是否可人为控制-->
<param NAME="EnableContextMenu" VALUE="-1">
<!--是否启用上下文菜单-->
<param NAME="url" VALUE="">
<!--播放的文件地址-->
<param NAME="PlayCount" VALUE="1">
<!--播放次数控制,为整数-->
<param name="rate" value="1">
<!--播放速率控制,1为正常,允许小数,1.0-2.0-->
<param name="currentPosition" value="0">
<!--控件设置:当前位置-->
<param name="currentMarker" value="0">
<!--控件设置:当前标记-->
<param name="defaultFrame" value="0">
<!--显示默认框架-->
<param name="invokeURLs" value="0">
<!--脚本命令设置:是否调用URL-->
<param name="baseURL" value="">
<!--脚本命令设置:被调用的URL-->
<param name="stretchToFit" value="0">
<!--是否按比例伸展-->
<param name="volume" value="50">
<!--默认声音大小0%-100%,50则为50%-->
<param name="mute" value="0">
<!--是否静音-->
<param name="uiMode" value="Full">
<!--播放器显示模式:Full显示全部;mini最简化;None不显示播放控制,只显示视频窗口;invisible全部不显示-->
<param name="windowlessVideo" value="0">
<!--如果是0可以允许全屏,否则只能在窗口中查看-->
<param name="fullScreen" value="0">
<!--开始播放是否自动全屏-->
<param name="enableErrorDialogs" value="-1">
<!--是否启用错误提示报告-->
<param name="SAMIStyle" value>
<!--SAMI样式-->
<param name="SAMILang" value>
<!--SAMI语言-->
<param name="SAMIFilename" value>
<!--字幕ID-->
</object>
</div>
</body>
<script type="text/javascript">
var obj = window.dialogArguments;
var videoUrl = obj.ossUuid;
window.TB_PlayBack1.url = videoUrl;
</script>
</html>
</pre><pre code_snippet_id="1561432" snippet_file_name="blog_20160121_3_1484930" name="code" class="html">mobileReplay.js:
<pre name="code" class="javascript">var originHeight = 0;
//初始化播放控件大小
$(function() {
$("#window").css("width", $("body").width());
$("#TB_PlayBack1").css("width", $("body").width());
originHeight = $("html").height();
$("#TB_PlayBack1").css("height",$("html").height());
setTimeout("styleAdjust()", 1000);
});
function styleAdjust(){
var curHeight = $("html").height();
if(originHeight != curHeight){
$("#window").css("width", $("body").width());
$("#TB_PlayBack1").css("width", $("body").width());
$("#TB_PlayBack1").css("height",$("html").height());
}
}
mobileVideoFrameIE11.jsp:<pre name="code" class="html"><!DOCTYPE HTML>
<html>
<head>
<title></title>
<script type="text/javascript">
function addUrl() {
var obj = window.dialogArguments;
var videoUrl = obj.ossUuid;
document.getElementById("v1").src=videoUrl;
document.getElementById("media").load();
}
</script>
</head>
<body onload="addUrl();">
<video width="800px" height="600px"
controls="controls" id="media" autoplay="autoplay">
<source id="v1" src="">
</video>
</body>
</html>
总结完毕,第一次自己写博客,好难过。。。。。。。。。。 转载注明出处:http://blog.csdn.net/zxh_2581285470/article/details/50557083
阅读更多
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了