我有一个移动 Javascript 应用程序,偶尔会动态创建一个 <video>
屏幕上的元素。我需要使用 Omniture 跟踪视频播放。我绑定(bind)了play
, pause
, ended
, seeking
和 seeked
跟踪用户启动视频、暂停、恢复和停止(或者他们完成观看视频)的事件。这都是通过像
s.Media.play("some_video_name", timePosition);
和
s.Media.stop("some_video_name");
等等。这一切目前都有效。
我现在要做的是使用 trackMilestones
跟踪 0、25、75 和 100% 的位置里程碑选项,但我不明白我在网上找到的任何示例实际上如何通知 Omniture s.Media
他们在哪里的对象。除非 Omniture 将事件处理程序附加到我的视频元素,否则它无法神奇地知道我的视频在哪里。那是他们在做什么吗?
我可以在 s.Media
上调用一些方法吗?反对在我的播放器播放视频时通知它我的位置?
最佳答案
这是一个跟踪 1/4 里程碑 (25,50,75,100) 的工作示例。
1.确保您的s_code.js
文件中包含以下内容
s.loadModule("Media");
s.Media.autoTrack=false;
s.Media.trackWhilePlaying=true;
s.Media.trackMilestones="25,50,75,100";
s_code 中也需要媒体模块。这是您需要的内容的摘录
s.m_Media_c="var m=s.m_i('Media');m.cn=function(n){var m=this;return m.s.rep(m.s.rep(m.s.rep(n,\"\\n\",''),\"\\r\",''),'--**--','')};m.open=function(n,l,p,b){var m=this,i=new Object,tm=new Date,a='',"
+"x;n=m.cn(n);if(!l)l=-1;if(n&&p){if(!m.l)m.l=new Object;if(m.l[n])m.close(n);if(b&&b.id)a=b.id;if(a)for (x in m.l)if(m.l[x]&&m.l[x].a==a)m.close(m.l[x].n);i.n=n;i.l=l;i.o=0;i.x=0;i.p=m.cn(m.playerNa"
+"me?m.playerName:p);i.a=a;i.t=0;i.ts=0;i.s=Math.floor(tm.getTime()/1000);i.lx=0;i.lt=i.s;i.lo=0;i.e='';i.to=-1;i.tc=0;i.fel=new Object;i.vt=0;i.sn=0;i.sx=\"\";i.sl=0;i.sg=0;i.sc=0;i.lm=0;i.lom=0;m.l"
+"[n]=i}};m._delete=function(n){var m=this,i;n=m.cn(n);i=m.l[n];m.l[n]=0;if(i&&i.m)clearTimeout(i.m.i)};m.close=function(n){this.e(n,0,-1)};m.play=function(n,o,sn,sx,sl){var m=this,i;i=m.e(n,1,o,sn,s"
+"x,sl);if(i&&!i.m){i.m=new Object;i.m.m=new Function('var m=s_c_il['+m._in+'],i;if(m.l){i=m.l[\"'+m.s.rep(i.n,'\"','\\\\\"')+'\"];if(i){if(i.lx==1)m.e(i.n,3,-1);i.m.i=setTimeout(i.m.m,1000)}}');i.m."
+"m()}};m.stop=function(n,
2.将HTML5视频播放器绑定(bind)到Omniture
var html5Player = document.getElementById('video');
html5Player.addEventListener('loadedmetadata',playerHandler,false);
html5Player.addEventListener('play',playerHandler,false);
html5Player.addEventListener('pause',playerHandler,false);
html5Player.addEventListener('ended',playerHandler,false);
var videoOpened = false;
var currentTime = 0;
function playerHandler(e){
// window.console.log(e);//video meta
//window.console.log(e.type);
if (html5Player.currentTime > 0) {
currentTime = html5Player.currentTime;
}
switch(e.type){
case 'play':
if(!videoOpened){
window.console.log('opened');
s.Media.open(videoPageName, html5Player.duration, publicationName);
s.Media.play(videoPageName, 0);
}else{
window.console.log('play');
s.Media.play(videoPageName, currentTime);
}
// alert('currentTime: ' + currentTime);
// alert('duration: ' + Math.floor(html5Player.duration));
// alert('videoPageName: ' + videoPageName);
videoOpened = true;
break;
case 'pause':
window.console.log('pause');
s.Media.stop(videoPageName,currentTime);
break;
case 'ended':
window.console.log('ended');
s.Media.stop(videoPageName,currentTime);
s.Media.close(videoPageName);
break;
default:
break;
}
}
关于javascript - 跟踪从自定义 HTML5 视频播放器到 Omniture 媒体模块的视频里程碑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8127065/