我目前正在使用SharePoint但是我有一个技术问题,我目前正在使用一些JQuery从页面库中的页面获取视频源,但是这会返回以下代码:
<dl>
<dt>MediaSource</dt>
<dd>
<a href="/Videos/Life Changing/video1.mp4">link</a>
</dd>
<dt>PreviewImageSource</dt>
<dd>
<a href="/Videos/Life Changing/Preview Images/snapshot.png">link</a>
</dd>
<dd>Inline</dd>
<dt>AutoPlay</dt>
<dd>False</dd>
<dt>Loop</dt>
<dd>False</dd>
<dt>InlineHeight</dt>
<dd>360px</dd>
<dt>InlineWidth</dt>
<dd>640px</dd>
<dt>ShowEmbedControl</dt>
<dd>True</dd>
<dt>ConfigureFromContext</dt>
<dd>False</dd>
<dt>VideoSetSource</dt>
<dd>
<a href="/Videos/Life Changing">link</a>
</dd>
</dl>
我需要提取&#34; .mp4&#34;网址以及&#34; .png&#34; url以便我可以在iframe中使用它们,请问最好这样做吗?
我的完整代码是:
$(document).ready(function () {
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', getVideoNews);
})
function getVideoNews() {
context = SP.ClientContext.get_current();
web = context.get_web();
list = web.get_lists();
list = web.get_lists().getByTitle('Pages');
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View Scope=\'Recursive\'><RowLimit>5</RowLimit><ViewFields><FieldRef Name=\'Comments\' /><FieldRef Name=\'LikesCount\' /><FieldRef Name=\'FileRef\' /><FieldRef Name=\'Title\' /><FieldRef Name=\'Rich_x0020_Video_x0020_Embed\' /><FieldRef Name=\'Summary_x0020_Text\' /></ViewFields><Query><Where><Eq><FieldRef Name=\'ContentType\' /><Value Type=\'Text\'>News Video</Value></Eq></Where><OrderBy><FieldRef Name=\'Created\' Ascending=\'True\' /></OrderBy></Query></View>');
camlQuery.set_folderServerRelativeUrl('News Videos');
collListItem = list.getItems(camlQuery);
context.load(list);
context.load(collListItem);
context.executeQueryAsync(
Function.createDelegate(this, newsvideoSuccessHandler),
Function.createDelegate(this, newsvideoErrorHandler));
}
function newsvideoSuccessHandler(result) {
listItemEnumerator = collListItem.getEnumerator();
while (listItemEnumerator.moveNext()) {
oListItem = listItemEnumerator.get_current();
var newsvideotitle = oListItem.get_item("Title");
var newsvideolink = oListItem.get_item("FileRef");
var newsvideo = oListItem.get_item("Rich_x0020_Video_x0020_Embed");
}
}
function newsvideoErrorHandler(sender, args) {
alert('Camelot News Video Error: \nRequest failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
答案 0 :(得分:1)
如果我理解正确,您可以使用以下行从富文本字段中获取HTML作为字符串:
var newsvideo = oListItem.get_item("Rich_x0020_Video_x0020_Embed");
不是手动将HTML字符串解析为文本,而是可以将其转换为实际的HTML元素,然后使用JavaScript的内置DOM解析实用程序(或使用jQuery),而不是大张旗鼓,假设数量和位置<a>
个元素是一致的:
var newsvideo = oListItem.get_item("Rich_x0020_Video_x0020_Embed");
var dummyElement = document.createElement("div");
dummyElement.innerHTML = newsvideo;
var links = dummyElement.querySelectorAll("a");
var videoUrl = links[0].href;
var imageUrl = links[1].href;
当然,这是while
循环中的内容;如果您有多个记录被迭代,您可能希望以不同方式处理这些值的存储。上面的代码只是一个让你入门的例子。
答案 1 :(得分:0)
未经测试!您可以尝试使用jQuery查找元素,然后获取href值ex:
$(this).find("a")
然后使用.attr(&#39; href&#39;)获取href值,您应该获得所有链接的列表。