var huawei = huawei || {};
typeof module != "undefined" && (module.exports = huawei);
// html标签增加特定class, attribute,限定样式,兼容浏览器用
document.documentElement.className += " ie" + document.documentMode;
document.documentElement.setAttribute("data-userAgent", navigator.userAgent);
$(document).on("videojs-loaded.setup-video", function () {
// return;
setTimeout(function () {
$(".js_video_player")
.filter('[data-play-nopop="1"]')
.each(function () {
var $t = $(this);
$t.addClass("invisible");
var vid = "myvideo-" + generateUUID();
var options = $(this).attr("data-player-id", vid).data("options");
var data = $(this).data();
delete data.options;
$.extend(options, data);
// if ($t.attr("data-play-nopop") == "1")
$t.parent()
.find(".player-outer-box")
.remove()
.end()
.prepend(
'
'
);
window.initPlayer(vid, options, false);
});
$(".js_video_player")
.not('[data-play-nopop="1"]')
.each(function () {
var vid = "myvideo-" + generateUUID();
var options = $(this).attr("data-player-id", vid).data("options");
var data = $(this).data();
delete data.options;
$.extend(options, data);
options.autoplay = false;
window.initPlayer(vid, options, true);
});
}, 10);
});
$(function ($) {
huawei.playerLoad();
// huawei.mobilePlayerInit();
});
huawei.playerSetup = function () {
// bof
(function ($) {
var playerInstance = null;
$(document).on("click", ".js-close-video", function (e) {
var $vbox = $(this).closest(".video-box");
$vbox.find("video").trigger("pause");
setTimeout(function () {
$vbox
.removeClass("show")
.delay(500)
.promise()
.then(function () {
$(this).hide();
});
}, 10);
});
$(document).off("vclick", ".js_video_player, .js-play-btn, .btn-play");
$(document)
.off("click", ".js_video_player, .js-play-btn, .btn-play")
.on("click", ".js_video_player, .js-play-btn, .btn-play", function (e) {
if (typeof videojs == "undefined") {
if (window.console) console.log("player 还未加载");
return false;
}
var $t = $(this);
var vid = $t.attr("data-player-id");
$("#" + vid)
.closest(".video-box")
.show()
.delay(10)
.promise()
.then(function () {
$(this).addClass("show");
});
setTimeout(function () {
videojs(vid).play();
}, 100);
return false;
});
$(document).on("click", ".js-close-video-popup", function (e) {
playerInstance.pause();
$("body").removeClass("video-popup");
$(this).closest(".videojs_player_wrapper").removeClass("active");
});
})(jQuery);
// eof
};
huawei.playerLoad = function (invokeSetup) {
jQuery.loadScript = function (url, options) {
// Allow user to set any option except for dataType, cache, and url
options = $.extend(options || {}, {
dataType: "script",
cache: true,
url: url,
});
/*
* Use $.ajax() since it is more flexible than $.getScript
* Return the jqXHR object so we can chain callbacks
*/
return jQuery.ajax(options);
};
window["lang"] =
document.URL.indexOf("/cn/") >= 0 || $("html[lang=zh]").length
? "cn"
: "en";
window["videojsLanguage"] = window["lang"] == "cn" ? "zh-CN" : "en";
window["playerLang"] = {};
window["playerLang"]["en"] = {
"Switch-Quality": "Switch quality",
"Download-Video": "Download video",
};
window["playerLang"]["cn"] = {
"Switch-Quality": "选择分辨率",
"Download-Video": "下载视频",
};
function getVideoJs7() {
$(
""
).prependTo("head");
$(
''
).prependTo("head");
return jQuery
.loadScript(
"https://www.huawei.com/Assets/corp/2020/js/lib/vendor/video.js/video.min.js"
)
.then(function (d) {});
}
invokeSetup = typeof invokeSetup == "boolean" ? invokeSetup : true;
var ismobile = isMobile();
var ie = isIE89();
var videoFn = getVideoJs7;
if (typeof videojs != "undefined") {
videoFn = function () {
var dfd = jQuery.Deferred();
setTimeout(function () {
dfd.resolve("ok");
}, 10);
return dfd;
};
}
var something = (function () {
var executed = false;
return function () {
if (!executed) {
executed = true;
// do something
videoFn().done(function (d) {
$(document).trigger("videojs-loaded");
if (!invokeSetup) return;
huawei.playerSetup();
if (ismobile) {
var $m = $(".js_video_player")
.filter("[data-play-nopop=1]")
.not("[data-mobile-init=0]");
$m.attr("data-player-autostart", "0");
setTimeout(function () {
$m.trigger("click");
// $(".js_video_player").filter("[data-player-mobile-init=1]").attr("data-player-autostart", "0").trigger("click");
}, 100);
}
});
}
};
})();
function load_jwplayer_fn() {
something();
}
load_jwplayer_fn();
};
huawei.mobilePlayerInit = function () {
if (!isMobile()) return;
window.mobVideoFlag = true;
// $(".js_video_player").filter("[data-player-id]").attr("data-player-autostart", "0").trigger("click");
$(".js_video_player").each(function (i, o) {
if (
$(this).attr("run_at_pc_module") ||
$(this).attr("data-mobile-init") == "0"
) {
return;
}
var player_id = "js-player-" + generateUUID();
var player_placeholder =
'';
// $(this).attr("data-player-id", player_id).attr("data-play-nopop", 1)
$(this)
.attr("href", "javascript:void(0)")
.parent()
.prepend(player_placeholder);
$(this).attr("data-onclick", $(this).attr("onclick")).prop("onclick", null);
});
};
window.initPlayer = function (playerid, options, append) {
options = options || {};
append = append || false;
var $vc = $(
''
);
if(!append) $vc.replaceAll($("#" + playerid));
else $("body").append($vc.addClass("content").append('').wrapAll('').parent().hide());
var player_options = {
controls: true,
autoplay: true,
preload: "metadata",
fluid: true,
sources: [],
aspectRatio: "16:9",
muted: false,
plugins: {},
language: window["videojsLanguage"],
};
options["aspectRatio"] =
options["aspectRatio"] || options["aspectratio"] || "16:9";
options["muted"] = options["muted"] || options["mute"] || false;
options["loop"] = options["loop"] || options["repeat"] || false;
if (videojs.getPlugin && videojs.getPlugin("videoJsResolutionSwitcher")) {
var res = window.innerWidth >= 768 ? 720 : "low";
player_options.plugins["videoJsResolutionSwitcher"] = {
default: res, // Default resolution [{Number}, 'low', 'high'],
dynamicLabel: true,
textControl: window["playerLang"][window["lang"]]["Switch-Quality"],
};
}
if (videojs.getPlugin && videojs.getPlugin("vjsdownload")) {
player_options.plugins["vjsdownload"] = {
beforeElement: "playbackRateMenuButton",
textControl: window["playerLang"][window["lang"]]["Download-Video"],
name: "downloadButton",
//downloadURL: 'https://insert_source_here.mp4' //optional if you need a different download url than the source
};
}
$.extend(player_options, options);
var player = videojs.getPlayers()[playerid];
if (player) player.dispose();
var player = videojs(playerid, player_options);
if (player_options["autoplay"])
setTimeout(function () {
player.play();
}, 1000);
if (videojs.getComponent("QualitySelector")) {
player.controlBar
.addChild("QualitySelector", {
textControl: "Quality",
})
.controlText(window["playerLang"][window["lang"]]["Switch-Quality"]);
}
if (player.ga) player.ga();
if (player_options.gaEvent) {
var flag = false;
var evt = function (e) {
if (flag) return;
flag = true;
var gaEvent = new Function("e", player_options.gaEvent);
gaEvent.apply(e);
};
if (player.one) player.one("play", evt);
else player.on("play", evt);
}
// var hasSend = false;
// player.on("play", function (e) {
// if (hasSend) return;
// hasSend = true;
// var url = player.currentSrc();
// try {
// utag.link({
// tealium_event: "video_clicked",
// video_id: url,
// video_name: "",
// });
// } catch (e) {}
// });
return player;
};
function isIE89() {
var ie = /(msie ([6-9]|10)|Trident)/i.test(navigator.userAgent);
return ie;
}
function isMobile() {
var isMobile = {
Android: function () {
return navigator.userAgent.match(/Android/i);
},
BlackBerry: function () {
return navigator.userAgent.match(/BlackBerry/i);
},
iOS: function () {
return navigator.userAgent.match(/iPhone|iPad|iPod/i);
},
Opera: function () {
return navigator.userAgent.match(/Opera Mini/i);
},
Windows: function () {
return navigator.userAgent.match(/IEMobile/i);
},
any: function () {
return (
isMobile.Android() ||
isMobile.BlackBerry() ||
isMobile.iOS() ||
isMobile.Opera() ||
isMobile.Windows()
);
},
};
return isMobile.any();
}
function generateUUID() {
var d = new Date().getTime();
var d2 =
(typeof performance !== "undefined" &&
performance.now &&
performance.now() * 1000) ||
0;
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
var r = Math.random() * 16;
if (d > 0) {
r = (d + r) % 16 | 0;
d = Math.floor(d / 16);
} else {
r = (d2 + r) % 16 | 0;
d2 = Math.floor(d2 / 16);
}
return (c === "x" ? r : (r & 0x3) | 0x8).toString(16);
});
}
// 播放器图标样式
$(document).on("videojs-loaded.style", function () {
var style = "\n ";
setTimeout(function () {
$(style).appendTo("head");
}, 10);
});
// 多分辨率插件
$(document).on("videojs-loaded.videojs-resolution-switcher", function () {
$("")
.appendTo("head");
/*! videojs-resolution-switcher - 2015-7-26
* Copyright (c) 2016 Kasper Moskwiak
* Modified by Pierre Kraft
* Licensed under the Apache-2.0 license. */
!function(){"use strict";var e=null;e=void 0===window.videojs&&"function"==typeof require?require("video.js"):window.videojs,function(e,t){var l,s={},r={},i={};function o(e,t,l,s){return r={label:l,sources:t},"function"==typeof s?s(e,t,l):(e.src(t.map(function(e){return{src:e.src,type:e.type,res:e.res}})),e)}var n=t.getComponent("MenuItem"),a=t.extend(n,{constructor:function(e,t,l,s){this.onClickListener=l,this.label=s,n.call(this,e,t),this.src=t.src,this.on("click",this.onClick),this.on("touchstart",this.onClick),t.initialySelected&&(this.showAsLabel(),this.selected(!0),this.addClass("vjs-selected"))},showAsLabel:function(){this.label&&(this.label.innerHTML=this.options_.label)},onClick:function(e){this.onClickListener(this);var t=this.player_.currentTime(),l=this.player_.paused(),s=this.player_.playbackRate(),r=this.player_.options_.poster;this.showAsLabel(),this.addClass("vjs-selected");var i=this.player_;setTimeout(function(){i.play()},500),l?this.player_.bigPlayButton.show():(this.player_.bigPlayButton.hide(),r&&this.player_.posterImage.setSrc("")),"function"!=typeof e&&"function"==typeof this.options_.customSourcePicker&&(e=this.options_.customSourcePicker);var n="loadeddata";"Youtube"!==this.player_.techName_&&"none"===this.player_.preload()&&"Flash"!==this.player_.techName_&&(n="timeupdate"),o(this.player_,this.src,this.options_.label,e).one(n,function(){this.player_.currentTime(t),l||(this.player_.playbackRate(s),this.player_.play(),this.player_.posterImage.setSrc(r)),this.player_.trigger("resolutionchange")})}}),c=t.getComponent("MenuButton"),u=t.extend(c,{constructor:function(e,l,s,r){if(this.sources=l.sources,this.label=r,this.label.innerHTML=l.initialySelectedLabel,c.call(this,e,l,s),this.controlText("Quality"),s.dynamicLabel)this.el().appendChild(r);else{var i=document.createElement("span");t.dom.appendContent(i,l.initialySelectedLabel),t.dom.addClass(i,"vjs-resolution-button-staticlabel"),this.el().appendChild(i)}},createItems:function(){var e=[],t=this.sources&&this.sources.label||{},l=function(t){e.map(function(e){e.selected(e===t),e.removeClass("vjs-selected")})};for(var s in t)t.hasOwnProperty(s)&&(e.push(new a(this.player_,{label:s,src:t[s],initialySelected:s===this.options_.initialySelectedLabel,customSourcePicker:this.options_.customSourcePicker},l,this.label)),i[s]=e[e.length-1]);return e}});l=function(e){var l=t.mergeOptions(s,e),n=this,a=document.createElement("span"),c={};function h(e,t){return e.res&&t.res?+t.res-+e.res:0}function d(e){var t={label:{},res:{},type:{}};return e.map(function(e){p(t,"label",e),p(t,"res",e),p(t,"type",e),y(t,"label",e),y(t,"res",e),y(t,"type",e)}),t}function p(e,t,l){null==e[t][l[t]]&&(e[t][l[t]]=[])}function y(e,t,l){e[t][l[t]].push(l)}t.dom.addClass(a,"vjs-resolution-button-label"),this.el().appendChild(a),n.updateSrc=function(e){if(!e)return n.src();n.controlBar.resolutionSwitcher&&(n.controlBar.resolutionSwitcher.dispose(),delete n.controlBar.resolutionSwitcher),e=e.sort(h);var s=function(e,t){var s=l.default,r="";"high"===s?(s=t[0].res,r=t[0].label):"low"!==s&&null!=s&&e.res[s]?e.res[s]&&(r=e.res[s][0].label):(s=t[t.length-1].res,r=t[t.length-1].label);return{res:s,label:r,sources:e.res[s]}}(c=d(e),e),r=new u(n,{sources:c,initialySelectedLabel:s.label,initialySelectedRes:s.res,customSourcePicker:l.customSourcePicker},l,a);return t.dom.addClass(r.el(),"vjs-resolution-button"),n.controlBar.resolutionSwitcher=n.controlBar.el_.insertBefore(r.el_,n.controlBar.getChild("fullscreenToggle").el_),n.controlBar.resolutionSwitcher.dispose=function(){this.parentNode.removeChild(this)},o(n,s.sources,s.label)},n.currentResolution=function(e,t){return console.log("currentResolution: ",e),null==e?r:(console.log("currentResolution: ",i[e]),null!=i[e]&&i[e].onClick(t),n)},n.getGroupedSrc=function(){return c},n.ready(function(){n.options_.sources.length>1&&n.updateSrc(n.options_.sources),"Youtube"===n.techName_&&function(e){e.tech_.ytPlayer.setPlaybackQuality("default"),e.tech_.ytPlayer.addEventListener("onPlaybackQualityChange",function(){e.trigger("resolutionchange")}),e.one("play",function(){var t=e.tech_.ytPlayer.getAvailableQualityLevels(),s={highres:{res:1080,label:"1080",yt:"highres"},hd1080:{res:1080,label:"1080",yt:"hd1080"},hd720:{res:720,label:"720",yt:"hd720"},large:{res:480,label:"480",yt:"large"},medium:{res:360,label:"360",yt:"medium"},small:{res:240,label:"240",yt:"small"},tiny:{res:144,label:"144",yt:"tiny"},auto:{res:0,label:"auto",yt:"default"}},r=[];t.map(function(t){r.push({src:e.src().src,type:e.src().type,label:s[t].label,res:s[t].res,_yt:s[t].yt})});var i="auto",o=0,n=((c=d(r)).label.auto,new u(e,{sources:c,initialySelectedLabel:i,initialySelectedRes:o,customSourcePicker:function(t,l,s){return e.tech_.ytPlayer.setPlaybackQuality(l[0]._yt),e}},l,a));n.el().classList.add("vjs-resolution-button"),e.controlBar.resolutionSwitcher=e.controlBar.addChild(n)})}(n)})},(t.registerPlugin||t.plugin)("videoJsResolutionSwitcher",l)}(window,e)}();
});
// ga统计插件
$(document).on("videojs-loaded.videojs-ga", function () {
/*
* videojs-ga - v0.4.2 - 2015-02-06
* Copyright (c) 2015 Michael Bensoussan
* Licensed MIT
*/
(function() {
var __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
videojs.registerPlugin=videojs.registerPlugin||videojs.plugin;
videojs.registerPlugin('ga', function(options) {
var dataSetupOptions, defaultsEventsToTrack, end, error, eventCategory, eventLabel, eventsToTrack, fullscreen, loaded, parsedOptions, pause, percentsAlreadyTracked, percentsPlayedInterval, play, resize, seekEnd, seekStart, seeking, sendbeacon, timeupdate, volumeChange;
if (options == null) {
options = {};
}
dataSetupOptions = {};
if (this.options()["data-setup"]) {
parsedOptions = JSON.parse(this.options()["data-setup"]);
if (parsedOptions.ga) {
dataSetupOptions = parsedOptions.ga;
}
}
defaultsEventsToTrack = ['loaded', 'percentsPlayed', 'start', 'end', 'seek', 'play', 'pause', 'resize', 'volumeChange', 'error', 'fullscreen', 'downloadvideo', 'resolutionchange'];
eventsToTrack = options.eventsToTrack || dataSetupOptions.eventsToTrack || defaultsEventsToTrack;
percentsPlayedInterval = options.percentsPlayedInterval || dataSetupOptions.percentsPlayedInterval || 10;
eventCategory = options.eventCategory || dataSetupOptions.eventCategory || 'Video';
eventLabel = options.eventLabel || dataSetupOptions.eventLabel;
options.debug = options.debug || false;
percentsAlreadyTracked = [];
seekStart = seekEnd = 0;
seeking = false;
loaded = function() {
if (!eventLabel) {
eventLabel = this.currentSrc().split("/").slice(-1)[0].replace(/\.(\w{3,4})(\?.*)?$/i, '');
}
if (__indexOf.call(eventsToTrack, "loadedmetadata") >= 0) {
sendbeacon('loadedmetadata', true);
}
};
timeupdate = function() {
var currentTime, duration, percent, percentPlayed, _i;
currentTime = Math.round(this.currentTime());
duration = Math.round(this.duration());
percentPlayed = Math.round(currentTime / duration * 100);
for (percent = _i = 0; _i <= 99; percent = _i += percentsPlayedInterval) {
if (percentPlayed >= percent && __indexOf.call(percentsAlreadyTracked, percent) < 0) {
if (__indexOf.call(eventsToTrack, "start") >= 0 && percent === 0 && percentPlayed > 0) {
sendbeacon('start', false);
} else if (__indexOf.call(eventsToTrack, "percentsPlayed") >= 0 && percentPlayed !== 0) {
sendbeacon('percent played', false, percent);
// utag ga4
// utagLink({
// 'tealium_event' : 'video_progress',
// 'video_url' : this.currentSrc(),
// 'video_percent': percent
// });
}
if (percentPlayed > 0) {
percentsAlreadyTracked.push(percent);
}
}
}
if (__indexOf.call(eventsToTrack, "seek") >= 0) {
seekStart = seekEnd;
seekEnd = currentTime;
if (Math.abs(seekStart - seekEnd) > 1) {
seeking = true;
sendbeacon('seek start', false, seekStart);
sendbeacon('seek end', false, seekEnd);
}
}
};
var isStart = true;
end = function() {
sendbeacon('end', false);
isStart = true;
// utagLink({
// 'tealium_event' : 'video_complete',
// 'video_url' : this.currentSrc()
// });
};
play = function() {
var currentTime;
currentTime = Math.round(this.currentTime());
sendbeacon('play', false, currentTime);
seeking = false;
if(isStart) {
isStart = false;
// utagLink({
// 'tealium_event' : 'video_start',
// 'video_url' : this.currentSrc()
// });
}
};
pause = function() {
var currentTime, duration;
currentTime = Math.round(this.currentTime());
duration = Math.round(this.duration());
if (currentTime !== duration && !seeking) {
sendbeacon('pause', false, currentTime);
}
};
volumeChange = function() {
var volume;
volume = this.muted() === true ? 0 : this.volume();
sendbeacon('volume change', false, volume);
};
resize = function() {
// sendbeacon('resize - ' + this.width() + "*" + this.height(), true);
};
error = function() {
var currentTime;
currentTime = Math.round(this.currentTime());
sendbeacon('error', true, currentTime);
};
fullscreen = function() {
var currentTime;
currentTime = Math.round(this.currentTime());
if ((typeof this.isFullscreen === "function" ? this.isFullscreen() : void 0) || (typeof this.isFullScreen === "function" ? this.isFullScreen() : void 0)) {
sendbeacon('enter fullscreen', false, currentTime);
} else {
sendbeacon('exit fullscreen', false, currentTime);
}
};
var downloadvideo = function() {
var currentTime;
currentTime = Math.round(this.currentTime());
sendbeacon('downloadvideo', false, currentTime);
};
var _this=this;
sendbeacon = function(action, nonInteraction, value) {
eventLabel=_this.currentSrc().split("/").slice(-1)[0]+"|"+location.pathname+location.search;
if (window.ga) {
ga('send', 'event', {
'eventCategory': eventCategory,
'eventAction': action,
'eventLabel': eventLabel,
'eventValue': value,
'nonInteraction': nonInteraction
});
} else if (window._gaq) {
_gaq.push(['_trackEvent', eventCategory, action, eventLabel, value, nonInteraction]);
} else if (options.debug) {
console.log("Google Analytics not detected");
}
};
// function utagLink(options){
// utag.link(options);
// }
this.ready(function() {
this.on("loadedmetadata", loaded);
this.on("timeupdate", timeupdate);
if (__indexOf.call(eventsToTrack, "resolutionchange") >= 0) {
this.on("resolutionchange", function () {
var currentTime = Math.round(this.currentTime());
sendbeacon('resolutionchange', false, currentTime);
});
}
if (__indexOf.call(eventsToTrack, "downloadvideo") >= 0) {
this.on("downloadvideo", downloadvideo);
}
if (__indexOf.call(eventsToTrack, "end") >= 0) {
this.on("ended", end);
}
if (__indexOf.call(eventsToTrack, "play") >= 0) {
this.on("play", play);
}
if (__indexOf.call(eventsToTrack, "pause") >= 0) {
this.on("pause", pause);
}
if (__indexOf.call(eventsToTrack, "volumeChange") >= 0) {
this.on("volumechange", volumeChange);
}
if (__indexOf.call(eventsToTrack, "resize") >= 0) {
this.on("resize", resize);
}
if (__indexOf.call(eventsToTrack, "error") >= 0) {
this.on("error", error);
}
if (__indexOf.call(eventsToTrack, "fullscreen") >= 0) {
return this.on("fullscreenchange", fullscreen);
}
});
return {
'sendbeacon': sendbeacon
};
});
}).call(this);
});
// 下载插件
$(document).on("videojs-loaded.videojs-download", function () {
/**
* videojs-vjsdownload
* @version 1.0.4
* @copyright 2019 7Ds7
* @license Apache-2.0
*/
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.videojsVjsdownload=e()}}(function(){return function e(t,o,n){function r(l,u){if(!o[l]){if(!t[l]){var f="function"==typeof require&&require;if(!u&&f)return f(l,!0);if(i)return i(l,!0);var a=new Error("Cannot find module '"+l+"'");throw a.code="MODULE_NOT_FOUND",a}var d=o[l]={exports:{}};t[l][0].call(d.exports,function(e){var o=t[l][1][e];return r(o||e)},d,d.exports,e,t,o,n)}return o[l].exports}for(var i="function"==typeof require&&require,l=0;l