javascript - 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
}
解决方案
推荐阅读
- mysql - 如何计算mysql中的列数和行数
- python - 尝试将保存的数据加载到新数据库时出现反序列化错误
- spring - Spring集成JMS IBM mq配置从一个队列读取消息并将其发送到六个不同的队列
- java - AWS Lambda - Java 静态初始化
- ios - 警报表关闭时iOS图像视图更改色调颜色
- django - Django模板优化
- java - How set up retry config fetching in spring boot?
- .net - 为什么 ListView 滚动在 Grid 中不起作用?
- caching - Magneto 2.2.4 中的 OpCache 缓存 env.php 配置文件
- whatsapp - 从网站向用户发送 Whatsapp 消息