使用 js (jquery) 查找所有 YouTube 链接

2023-11-26

假设有一个包含内容和 YouTube 链接的 div。我想获取该 YouTube 链接并将其嵌入。

<div id="content"><p>Here is a cool video.  Check it out: http://www.youtube.com/watch?v=oHg5SJYRHA0</p></div>

我想抓取链接并将其替换为带有 js (jquery) 的嵌入代码。

更新1:

到目前为止,这是我的js:

    $("#content").each(function(){
    var allContent = $(this).html();
    //need regex to find all links with youtube in it, ovbiously it can't == youtube.com, but basically the link has to have youtube.com in it.
    if ($("a",allContent).attr("href") == "youtube.com" ) {
        // grab youtube video id
        /* replace link with <div id="yt-video">
        <object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/429l13dS6kQ&hl=en&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/429l13dS6kQ&hl=en&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object>
        </div>
        */
    }
});

我改变了content从一个 id 到一个类,因为我猜你会有多个内容区域?

我确信有一种更有效的方法可以做到这一点,但这是我的尝试。Note我对正则表达式很烂,所以我所拥有的是尽可能接近的,我确信有人可以帮助改进它,所以它不必取代?v=在每个循环内。

HTML

<div class="content"><p>Here is a cool video.  Check it out: http://www.youtube.com/watch?v=oHg5SJYRHA0 and this one http://www.youtube.com/watch?v=fLBPsZVI8Gc&feature=player_embedded</p></div>
<div class="content"><p>Here is a cool video.  Check it out: http://www.youtube.com/watch?v=fLBPsZVI8Gc&feature=player_embedded</p></div>

Script

$(document).ready(function(){
 // I added the video size here in case you wanted to modify it more easily
 var vidWidth = 425;
 var vidHeight = 344;

 $('.content:contains("youtube.com/watch")').each(function(){
  var that = $(this);
  var txt = $(this).html();
  // Tthis could be done by creating an object, adding attributes & inserting parameters, but this is quicker
  var e1 = '<obj'+'ect width="' + vidWidth + '" height="' + vidHeight + '"><param name="movie" value="http://www.youtube.com/v/';
  var e2 = '&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" ' +
   'value="always"></param><em'+'bed src="http://www.youtube.com/v/';
  var e3 = '&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="' + vidWidth +
   '" ' + 'height="' + vidHeight + '"></embed></object> ';

  var vid = txt.match(/((\?v=)(\w[\w|-]*))/g); // end up with ?v=oHg5SJYRHA0
  if (vid.length) {
   $.each(vid, function(i){
    var ytid = this.replace(/\?v=/,'') // end up with oHg5SJYRHA0
    that.append( e1 + ytid + e2 + ytid + e3 ) 
   })
  }
 })
})

我会第一个承认它不漂亮,但它有效。我还将这段代码的工作版本粘贴到这个粘贴箱


更新:我已经清理了一些代码,现在看起来是这样的(demo):

$(document).ready(function(){
 // I added the video size here in case you wanted to modify it more easily
 var vidWidth = 425;
 var vidHeight = 344;

 var obj = '<object width="' + vidWidth + '" height="' + vidHeight + '">' +
     '<param name="movie" value="http://www.youtube.com/v/[vid]&hl=en&fs=1">' +
     '</param><param name="allowFullScreen" value="true"></param><param ' +
     'name="allowscriptaccess" value="always"></param><em' +
     'bed src="http://www.youtube.com/v/[vid]&hl=en&fs=1" ' +
     'type="application/x-shockwave-flash" allowscriptaccess="always" ' +
     'allowfullscreen="true" width="' + vidWidth + '" ' + 'height="' +
     vidHeight + '"></embed></object> ';

 $('.content:contains("youtube.com/watch")').each(function(){
  var that = $(this);
  var vid = that.html().match(/(?:v=)([\w\-]+)/g); // end up with v=oHg5SJYRHA0
  if (vid.length) {
   $.each(vid, function(){
    that.append( obj.replace(/\[vid\]/g, this.replace('v=','')) );
   });
  }
 });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 js (jquery) 查找所有 YouTube 链接 的相关文章

  • 在Javascript中按降序对字符串进行排序(最有效)?

    W3Schools 有这个例子 var fruits Banana Orange Apple Mango fruits sort fruits reverse 这是在 Javascript 中按降序对字符串进行排序的最有效方法吗 Updat
  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • jQuery,REAL:不是等价的运算符?

    此代码行选择任何类名不是 id 和 quantity 的 div 内的所有子输入 div item gt div not id quantity gt input live keydown function event 执行相反操作的代码行
  • 如何按照编写的顺序迭代 javascript 对象属性

    我发现了代码中的一个错误 我希望通过最少的重构工作来解决该错误 此错误发生在 Chrome 和 Opera 浏览器中 问题 var obj 23 AA 12 BB iterating through obj s properties for
  • Ember.js 处理 View 事件后转换到路由

    Setup 我有一个 Ember 应用程序 支持使用 Imgur API 上传图像 我已经有一个工作路线和模板来处理任何 Imgur ID 但我想在上传新图像后转换到此路线 使用返回的 Imgur ID 这是该应用程序的相关部分 http
  • 即使我可以监视其他方法,也无法监视事件处理程序

    我想使用 Jest Jasmine Enzyme 测试 React 中的事件处理程序 MyComponent js import React from react class MyComponent extends React Compon
  • 仅一页 JavaScript 应用程序

    您是否尝试过单页 Web 应用程序 即浏览器仅从服务器 获取 一页 其余部分由客户端 JavaScript 代码处理 此类 应用程序页面 的一个很好的例子是 Gmail 对于更简单的应用程序 例如博客和 CMS 使用这种方法有哪些优点和缺点
  • Google Chrome 106 可拖动导致元素消失

    使用拖放元素时 绝对定位元素中包含的大多数其他元素都会从屏幕上消失 如果我调整窗口大小 这些元素会出现 但在开始拖动时会再次消失 我在最新版本的 Google Chrome 106 和 Beta 版本 107 0 5304 18 以及现在的
  • 将数组排序为第一个最小值、第一个最大值、第二个最小值、第二个最大值等

    编写一个JS程序 返回一个数组 其中第一个元素是第一个最小值 第二个元素是第一个最大值 依此类推 该程序包含一个函数 该函数接受一个参数 一个数组 该函数根据要求返回数组 输入示例 array 2 4 7 1 3 8 9 预期输出 1 9
  • Twitter 嵌入时间轴小部件

    我继续下载http platform twitter com widgets js http platform twitter com widgets js And the http platform twitter com embed t
  • 如何通过jquery更改元素的类名

    div class bestAnswerControl div class IsBestAnswer div div 我想补充一下 bestanswer some attribute 我想更换class IsBestAnswer div 到
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的
  • JavaScript 代码在不使用 ActiveX 的情况下截取网站屏幕截图

    我有一个用户与之交互的 JavaScript 应用程序 我需要保存当前界面的外观 裁剪出我需要的部分 或者通过指定div只拍摄我需要的部分 然后发送回服务器 显然任何外部服务都无法做到这一点 我需要一个 JavaScript 或Flash
  • Nodejs mysql 获取正确的时间戳格式

    我在用着mysqljs https github com mysqljs mysql得到结果后sql我变得不同TimeStamp格式如下 created at Sat Jul 16 2016 23 52 54 GMT 0430 IRDT 但
  • 数据表日期范围过滤器

    如何添加日期范围过滤器 like From To 我开始进行常规搜索和分页等工作 但我不知道如何制作日期范围过滤器 我正在使用数据表 1 10 11 版本 My code var oTable function callFilesTable
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • Jquery - 通过在字符串中构建 id 的 id 获取元素

    我在使用 jquery 元素时遇到问题 我正在 var 中构造名称 例如 var myId myGotId myId attr title changed myId 返回空 我想通过 id 获取我的元素 但动态构建我的 Id 连接字符串 编
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012
  • 如何在 gulp.src 中使用基本正则表达式?

    我正在尝试选择两个文件gulp src highcharts js and highcharts src js 当然 我知道我可以使用数组表达式显式添加这两个表达式 但出于学习目的 我尝试为它们编写一个表达式 我读过可以使用简单的正则表达式
  • 在 GWT 中,在任何主机页标记上添加事件处理程序

    我想为任何标签添加 MouseOver 事件处理程序 举个例子 我想为旧版 HTML 页面中的每个锚点页面添加事件处理程序 继GWT指南 http code google com webtoolkit doc 1 6 DevGuideUse

随机推荐

  • Java 日历的设置值没有给出预期的日期时间

    我有一个小时 分钟 日期和毫秒时间戳 并且正在尝试创建一个表示时间的 Date 对象 时间戳以东部夏令时间提供 在剖析这个问题时 我创建了一些简单的测试代码来查看发生了什么 并观察到以下情况 Date today new Date int
  • 如何将 QMetaMethod 与 QObject::connect 一起使用

    我有两个 QObject 子类实例和一个对象中信号的两个 QMetaMethod 实例以及另一个对象中插槽的两个实例 我想将这个信号和插槽相互连接 我查看了 qobject h 文件 发现 SIGNAL 和 SLOT 宏只是在方法签名的开头
  • 如何在 slick + postgresql 上进行分页选择

    在使用 slick 3 的 postgresql 数据库中 分页的最佳方式是什么 获取所有行并使用 scala 进行分页 似乎效率不高 带限制和偏移量的静态查询 还有其他办法吗 您可以使用take and drop上的方法TableQuer
  • 如何向连续几天的“连续”行中添加运行计数

    谢谢Mike添加创建 插入语句的建议 create table test pid integer not null date date not null primary key pid date insert into test value
  • 时间单元测试的想法和技巧?

    有人做过时间单元测试吗 我什至不确定这样的术语是否已被创造 但重点是测试操作是否在时间限制内执行 我有一些算法 我想测试它们的执行时间是否按预期增加 我想类似的测试可以用于 IO 以及什么不是 有点像 test timeout 之类的 然而
  • 在 WF4 中工作流定义更改后加载持久工作流

    如何解决这个问题 在WF4中 我在 xaml 中创建一个工作流程并启动它的多个实例 我有一个持久性存储 并且所有工作流程都保留在其工作流程一半的书签上 现在我停止应用程序 如果我重新启动应用程序 一切都会恢复 并且很好地完成 但是 如果我想
  • C# 不可空字段:Lateinit?

    我想知道如何使用后期初始化C 中的类字段可为空的引用类型 想象一下下面的类 public class PdfCreator private PdfDoc doc public void Create FileInfo outputFile
  • 在 Swift 中生成随机单词

    我正在尝试探索 Swift 编程语言 我在 Swift API 中搜索 发现了UIReferenceLibraryViewController班级 我发现如果一个单词是真实的还是不真实的 该方法会返回一个布尔值 dictionaryHasD
  • 如何使用 Visual Studio Text Visualizer 实现自定义类型?

    在 Visual Studio 2015 以及某些旧版本 中 调试 C 代码时 可以显示string通过带有放大镜图标的下拉列表显示各种可视化工具 文本 XML HTML JSON 中的变量 这也适用于某些非字符串类型 例如 System
  • 不带引号的 JavaScript 对象文字键的规则?

    在 JavaScript 中 您可以像这样定义一个对象 var d 1 test 我可以设置一个带有负数索引的键 如下所示 d 1 test2 但如果我尝试在文字初始化中使用负数 则会收到错误 var d 1 test 1 test2 Un
  • ClientScript.RegisterStartupScript 不起作用

    我已经搜索过 SO 和 google 但我似乎无法让它工作 该代码位于我的 asp net 应用程序中 取消 按钮的代码隐藏单击事件中 但似乎没有关闭弹出窗口 有任何想法吗 try if btnCancel Text Close Strin
  • bash 使用 zsh 等快捷方式扩展 cd

    是否有可能在 bash 中扩展类似的东西 cd u lo b to cd usr local bin 抱歉 我无法早点发布 我正在工作 并且绑定功能比我最初想象的更容易出现问题 这是我想出的 绑定以下脚本 bin bash HOME bas
  • node.js - 在进程之间共享套接字

    我读到可以在进程之间共享套接字 这在 Node js 中也可行吗 我在 node js 中看到了集群 api 但这不是我要找的 我希望能够在一个进程中接受连接 也许发送和读取一点 并在一段时间后将此套接字传递给另一个完全独立的 node j
  • 如何将Makefile重写为android.mk?

    在我的新项目中 我需要基于一个c编写的项目 我知道我可以使用 NDK 来做到这一点 但这里有一个问题 如何重写标准Makefile进入Android mk 更进一步 在Android中 我可以忽略ndk 直接使用jni构建项目 将c项目适配
  • 如何在 Electron 中访问 的 DOM?

    我刚刚开始使用 Electron 之前有使用过 node webkit nw js 的经验 在 nw js 中 我能够创建 iframe 然后访问所述 iframe 的 DOM 以获取标题 图标等内容 几天前 当我拿起 Electron 将
  • 将本地 .aar 文件添加到我的 gradle 构建中

    所以我创建了一个Android库并成功将其编译成 aar文件 我将这个 aar 文件命名为 projectx sdk 1 0 0 aar 现在我希望我的新项目依赖于这个 aar 所以我所做的是这个帖子 但这篇文章让我感到困惑 因为我没有得到
  • 导入android.support.v7无法解决

    我是安卓新手 目前 我有adt bundle windows x86 20131030 zip Windows 32 位 已安装 并已成功安装 Android SDK 和 Eclipse 另外 我还更新了 Android SDK 管理器中的
  • 用于 Ruby on Rails / ActiveRecord 的优雅 PostgreSQL Group by

    尝试使用 PostgreSQL 检索按日期分组的 ActiveRecord 对象数组 更具体地说 我正在尝试翻译以下 MySQL 查询 posts Post all group gt date date conditions gt loca
  • 具有其他表的多个 id 的 SQL 字段

    有人可以告诉我如何创建这个数据库结构吗 这是一个例子 Table countries id countryname 1 US 2 DE 3 FR 4 IT 现在我有另一个表 产品 我想在其中存储该产品可用的所有国家 地区 Table pro
  • 使用 js (jquery) 查找所有 YouTube 链接

    假设有一个包含内容和 YouTube 链接的 div 我想获取该 YouTube 链接并将其嵌入 div p Here is a cool video Check it out http www youtube com watch v oH