2015-07-13 2 views
1

Я запускаю программное обеспечение для продажи билетов с возможностью управления CSS и JS для настройки, и мне нужно преобразовать URL-адрес видео в iframe. В настоящее время я использую этот код:Youtube URL to Iframe

$('#wiki-page-content').contents().each(function() { 
// Skip non text nodes. 
if (this.nodeType !== 3) { 
    return true; 
} 
// Grab text 
var matches = this.data.match(/(?:http:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(.+)/g); 

if (!matches) { 
    return true; 
} 
var iframe = $('<iframe width="420" height="345" frameborder="0" allowfullscreen />', { 
    src: 'http://www.youtube.com/embed/' + matches[1] 
}); 
iframe.insertAfter(this); 
$(this).remove();}); 

Теперь проблема в том, когда кто-то ставит URL внутри страницы WIKI с помощью текстового редактора, это оборачивает <P></P> тег вокруг него. Это вызывает проблему? Как я могу это преодолеть.

ответ

0

Тег имеет noteType равно 1. Попробуйте что-то вроде этого:

$('#wiki-page-content').contents().each(function() { 
    // Skip non text nodes. 
    var text; 

    switch (this.nodeType) { 
     case 3: 
      text = this.data; 
      break; 
     case 1: 
      text = this.innerHTML; // or this.textContent 
      break; 
     default: 
      return true; 
    } 

    // Grab text 
    var matches = text.match(/(?:http:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(.+)/g); 

    if (!matches) { 
     return true; 
    } 
    var iframe = $('<iframe width="420" height="345" frameborder="0" allowfullscreen />', { 
     src: 'http://www.youtube.com/embed/' + matches[1] 
    }); 
    iframe.insertAfter(this); 
    $(this).remove(); 
}); 
+0

жаль им немного потеряли вы можете разместить код реализован с моим текущим .. –

+0

Я обновил свой код с вашими один – rbk

+0

не работает, он заставил все внутри этого класса исчезнуть –