结合两个代码片段?将用户输入的 Youtube url 转换为嵌入 url,然后将 iframe src 替换为转换后的 url

Posted

技术标签:

【中文标题】结合两个代码片段?将用户输入的 Youtube url 转换为嵌入 url,然后将 iframe src 替换为转换后的 url【英文标题】:Combining two code snippets? Convert user input Youtube url to embed url and then replace iframe src with converted url 【发布时间】:2014-01-21 11:37:10 【问题描述】:

我希望用户将他们的 youtube 网址复制并粘贴到输入字段中,单击提交按钮,然后在输入字段上方加载该视频。但是,非嵌入的 youtube 网址在 iframe 中不起作用,因此需要使用此正则表达式进行转换。

我为正则表达式找到的代码:http://jsfiddle.net/88Ms2/296/

此代码适用于两个标签之间的 html,但我想根据用户输入更新 iframe 的 src attr。

我能够使用此脚本将输入值转换为 iframe src,但它使用的是嵌入链接,而不是浏览器顶部的 url。

function getVid()
    document.getElementById("vidSrc").src = document.getElementById("txtSrc").value;
    return false;

我需要以某种方式将两者结合起来,以便当用户将 youtube url 粘贴到文本字段中时,该 url 将转换为带有正则表达式的嵌入代码(如果有必要),然后用该输入替换 iframe src价值。

非常感谢您的任何回复。我是新手,非常感谢这个网站。

【问题讨论】:

【参考方案1】:

使用相同的正则表达式,它看起来像这样:(Updated example)

$('input[type=submit]').click(function () 
    function generate() 
        var input = $('#user_input').val();
        return input.replace(/(?:http:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(.+)/g, '<iframe   src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>');
    
    $('#video').html(generate());
);

或者,这是另一种使用纯 javascript 的方法:(example)

document.getElementById('element').onclick = function() 
    function generate() 
        var input = document.getElementById('user_input').value;
        return input.replace(/(?:http:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(.+)/g, '<iframe   src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>');
    
    document.getElementById('video').innerHTML = generate();

【讨论】:

这很好用!我最终使用了 jQuery 代码,并将 iframe 的高度和宽度更改为 100%,因为我将它合并到 Bootstrap 中,因此它具有响应性。非常感谢

以上是关于结合两个代码片段?将用户输入的 Youtube url 转换为嵌入 url,然后将 iframe src 替换为转换后的 url的主要内容,如果未能解决你的问题,请参考以下文章

将 Dash 与 Alfred 结合起来

将片段添加到片段中(嵌套片段)

活动与片段实施

如何在 JSON 中为 v3 YouTube API 上传构建片段和状态

如何修复空白片段?

Android YouTube Player API Fragment无法手动处理触摸事件