我发现并使用这个美妙的 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
}