首页 > 解决方案 > HTML5 嵌入式视频的 Hitcounter - 使用 Rest API 将用户名、视频标题和查看日期添加到 SharePoint 2013 列表

问题描述

我发现并使用这个美妙的 Rest API 脚本为我的 SharePoint 网站页面创建了一个 Hitcounter,它的工作原理与宣传的一样。它将页面 URL、查看者姓名和日期添加到 SharePoint 列表,并在网站页面的 div 中显示计数。当查看者/访问者选择播放按钮查看网站页面上显示的嵌入式 HTML5 视频时,我已经尝试了几天来完成这项工作。对于如何修改提供的 Rest API 脚本以定位页面上的视频而不是网站上的视频,我将不胜感激。对此问题的任何帮助将不胜感激。

function loadImages() {
jQuery(document).ready(function(){
    console.log('Enterned');
    ExecuteOrDelayUntilScriptLoaded(getLoggedInUser, "sp.js");
        hitCounter();

});
}


function hitCounter() {
    ExecuteOrDelayUntilScriptLoaded(function(){
       var LoggedInName;
var URLLink = window.location.href.toLowerCase();

getLoggedInUser().done(function(LoggedInNameTemp){
      LoggedInName = LoggedInNameTemp;



checkCounterVal(function(retCntrVal) {  

    var clientContext = new SP.ClientContext.get_current(); 
    var oList = clientContext.get_web().get_lists().getByTitle('HitCounter');       

    var itemCreateInfo = new SP.ListItemCreationInformation();
    var oListItem = oList.addItem(itemCreateInfo); 
    oListItem.set_item('Title', "PageVisited");
    oListItem.set_item('URL', URLLink);
    oListItem.set_item('Counter', retCntrVal+1);
    oListItem.set_item('Time', new Date($.now()));
    oListItem.set_item('User', LoggedInName); 

    oListItem.update();
    clientContext.load(oListItem,'Include(Title, URL, Counter, Time, User)');

    clientContext.executeQueryAsync(Function.createDelegate(this, onQuerySucceeded), Function.createDelegate(this, onQueryFailed));



}); //checkCounterVal closed



}).fail(function(error){
      alert(error.get_message());
    });  //getLoggedInUser closed

    },"SP.JS");
}

function onQuerySucceeded() {

//alert("Page visit value increased by 1");

}

function onQueryFailed(sender, args) {

//alert('Request failed to save page visit counter: ' + args.get_message() + ' \n and \n ' + args.get_stackTrace());

}


function getLoggedInUser(listTitle,propertiesToInclude)
{ 
    //TimeCreated
   var clientContext = new SP.ClientContext.get_current();
    currentUser = clientContext.get_web().get_currentUser();    
    clientContext.load(currentUser);
    //clientContext.executeQueryAsync(Function.createDelegate(this,onRetUsrQuerySucceeded), Function.createDelegate(this,onRetUsrQueryFailed));
    var d = $.Deferred();
    clientContext.executeQueryAsync(function() {
    var result = currentUser.get_title();
       d.resolve(result);
   },
   function(sender,args){
       d.reject(args);
   });
   return d.promise();
} 


function checkCounterVal(callback) {

var retVarNm = 0;      

    $.ajax({
        url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('HitCounter')/Items?$select=Counter&$top=1&$orderby=Created desc",
        method: "GET",
        cache: false,
        headers: { "accept": "application/json;odata=verbose" },
        success: function (data) {  

            for (var i = 0; i < data.d.results.length; i++) { 

            if(data.d.results[i].Counter != null) {                       
                        retVarNm = data.d.results[i].Counter; 
                $("#pageVisitCount").text("Page Hit: " + retVarNm);
            }           

                      } 

            callback(retVarNm);  

        },
        error: function (data) {
            alert("Failed to check counter");           
        }
         });//ajax closed

}

标签: javascripthtmlhtml5-videosharepoint-2013sharepoint-rest-api

解决方案


推荐阅读