本文讲述如何用Javascript 操作 SharePoint media web part。
需求是这样的,SharePoint页面上所有若干链接到Media文件(wmv;wma;avi;mpg;mp3;)的连接。
现在用户要求点击链接直接在网页中播放该连接指向的Media文件。
思路:
1. 在页面插入media web part(手动)
2. 首先在document.onload里面遍历所有的链接(a), 凡是指向的Media文件的链接,覆盖其onclik 事件
3. 在onclick 事件中 使用Javascript 操作 SharePoint media web part
代码实现(2, 3):
<script>
var mdeiaPlayerHostId;
var closeButton;
function getMediaPlayer() {
if (mdeiaPlayerHostId) {
var p = document.getElementById(mdeiaPlayerHostId)
var obj = p.getElementsByTagName("object");
return obj[0].Content.MediaPlayer;
}
else {
var paramNodes = document.getElementsByTagName("param");
for (i = 0; i < paramNodes.length; i++) {
if (paramNodes[i].value && paramNodes[i].value == "/_layouts/clientbin/mediaplayer.xap") {
mdeiaPlayerHostId = paramNodes[i].parentNode.parentNode.id;
return paramNodes[i].parentNode.Content.MediaPlayer;
}
}
}
}
function CloseMediaPlayer() {
var playerDiv = document.getElementById(mdeiaPlayerHostId);
playerDiv.style.display = "none";
var closeMediaButtonDiv = document.getElementById("CloseMediaButtonDiv");
closeMediaButtonDiv.style.display = "none";
}
function OpenMediaPlayer() {
var playerDiv = document.getElementById(mdeiaPlayerHostId);
playerDiv.style.display = "";
var closeMediaButtonDiv = document.getElementById("CloseMediaButtonDiv");
closeMediaButtonDiv.style.display = "";
}
function GetTitle(source) {
title = source;
var index = title.lastIndexOf("/");
title = title.substring(index + 1, title.length);
return title
}
function PlayerMediaBySliverlight(source) {
var playerObject = getMediaPlayer();
playerObject.AutoPlay = true;
playerObject.MediaSource = source;
playerObject.MediaTitle = GetTitle(source);
if (!closeButton) {
var closeHtml = "<a id='downloadMediaLink' style='float:left' href=''></a><a style='float:right' οnclick='CloseMediaPlayer();'>Close</a>";
var playerDiv = document.getElementById(mdeiaPlayerHostId);
closeButton = document.createElement("div");
closeButton.id = "CloseMediaButtonDiv";
closeButton.innerHTML = closeHtml;
playerDiv.parentNode.insertBefore(closeButton, playerDiv);
}
var downloadMediaLink = document.getElementById('downloadMediaLink');
downloadMediaLink.href = source;
downloadMediaLink.innerText = "正在播放:" + GetTitle(source);
OpenMediaPlayer();
playerObject.Play();
}
function WindowsLoad () {
// wmv;wma;avi;mpg;mp3;
var linkNodes = document.getElementsByTagName("a");
for (i = 0; i < linkNodes.length; i++) {
if (linkNodes[i].href && (linkNodes[i].href.indexOf('.wmv') != -1 ||
linkNodes[i].href.indexOf('.wma') != -1 ||
linkNodes[i].href.indexOf('.avi') != -1 ||
linkNodes[i].href.indexOf('.mpg') != -1 ||
linkNodes[i].href.indexOf('.mp3') != -1)) {
linkNodes[i].setAttribute("onclick", "PlayerMediaBySliverlight('" + linkNodes[i].href + "'); return false;");
// alert(linkNodes[i].href);
}
}
}
window.attachEvent("onload", WindowsLoad);
</script>