2016-04-13 5 views
0

я в настоящее время с помощью 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> 

Мне нужно извлечь URL-адрес «.mp4», а также URL-адрес «.png», чтобы я мог использовать их в 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()); 
} 

ответ

1

Если я правильно понять, что вы получаете HTML в виде строки из богатого текстового поля с помощью следующей строки:

var newsvideo = oListItem.get_item("Rich_x0020_Video_x0020_Embed"); 

Вместо того, чтобы вручную разбор, что HTML строка как текст, вы можете преобразовать его в фактическую HTML элементы, а затем использовать встроенные DOM разбора утилиту в JavaScript (или использовать 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 петля; если у вас есть несколько повторяющихся записей, вы можете захотеть обработать хранение этих значений по-разному. Вышеприведенный код является лишь примером для начала работы.

0

Не тестировался! Вы можете попытаться найти элементы, используя JQuery, а затем получить HREF значение ех:

$(this).find("a") 

затем получить HREF значение с .attr («HREF»), и вы должны получить список всех ссылок.

+0

Я, вероятно, должен был разместить мой полный код, это не работает на реальной странице, он запрашивает библиотеку SharePoint для источника видео, и это то, что он возвращает. Теперь я отредактирую свой пост. – Adam13Hylo

+0

Мне нужно больше информации об этом. В какой переменной вы получаете этот первый код? list var что он содержит? В любом случае, я думаю, вы получаете этот код как строку или как массив, и вам нужно разобрать его, чтобы получить URL-адреса. – Catalin

+0

Я обновил свой вопрос, включив в него исходный код, надеюсь, это все объяснит. Сожалею! – Adam13Hylo

Смежные вопросы