Javascript 在不重新加载页面的情况下更改youtube视频ID

Javascript 在不重新加载页面的情况下更改youtube视频ID,javascript,youtube,polymer,bookmarklet,Javascript,Youtube,Polymer,Bookmarklet,这个问题是关于从javascript编写youtube主站点、客户端的脚本 虽然点击看起来很简单,但我发现在不重新加载的情况下,无法通过新的非上下文视频ID更改当前视频 这似乎与使用中的polymer库有关,它有很多阴影dom和一些特殊行为 以下是上下文:我正在为自己制作一个bookmarklet,用于从redditjsonapi加载视频,它支持CORS调用 到目前为止还不错,通过这个简单的手工脚本,我可以将许多视频、图像预览和链接加载到youtube边栏中 Bookmarklet调用脚本: j

这个问题是关于从javascript编写youtube主站点、客户端的脚本

虽然点击看起来很简单,但我发现在不重新加载的情况下,无法通过新的非上下文视频ID更改当前视频

这似乎与使用中的
polymer
库有关,它有很多阴影dom和一些特殊行为

以下是上下文:我正在为自己制作一个bookmarklet,用于从redditjsonapi加载视频,它支持CORS调用

到目前为止还不错,通过这个简单的手工脚本,我可以将许多视频、图像预览和链接加载到youtube边栏中

Bookmarklet调用脚本:

javascript:void%20function(){target=document.getElementsByTagName(%22script%22)[0],inj=document.createElement(%22script%22),inj.src=%22https://webdev23.github.io/reddube/reddube.js%22,target.appendChild(inj)}();
这个bookmarklet正在向DOM加载一个js文件,该文件正在解析jsonapi以获取我所需要的内容

以下是:

2018年3月18日:悬赏结束:问题未解决

这是一件相当复杂的事情

dom内容在每次重新加载时都会不断变化,并且会在不断变化的脚本中包含推荐的视频id。此id仅允许使用ajax功能

此建议在任何重新加载时都会发生更改,但它们会以循环的方式返回

我正在建立一个工具来深入分析差异,我发现了许多有趣的东西,比我一直在寻找的东西多得多

这个话题不接近

这不是目的地,而是旅程。


youtube上似乎没有该播放器的(公共)api:/ 但是iframe youtube播放器有一个,你可以直接打电话给它

player.loadVideoById("Vw4KVoEVcr0", 0, "default");
详情请参阅

这是我发现的一个快速示例,您可以在其中看到它的作用:

如果你真的想直接修改youtube,你可能必须仔细研究一下模糊的代码:/I试图找到它。。。但是它很模糊,所以你很难找到它。即使您找到它,它也会像
\u yt\u player.h.xx.xy.h()
。此外,无论何时生成新代码(甚至可能与国家不同……),您的代码都可能会中断

此外,它似乎与聚合物无关,因为有一个播放器元素,但它没有改变视频的功能。显然,这只是为了让玩家。。。控件仍然驻留在js函数中


很抱歉没有更好的消息-也许其他人知道得更多。

尽管视频ID是
YgGzAKP\u HuM
如果你检查
你会看到这样的情况:

<video class="video-stream html5-main-video" src="blob:https://www.youtube.com/8e1ef216-1901-ec44-9b76-ea8276e368c6"></video>

如果你想避免重新加载页面,你需要找到youtube如何从视频ID创建他们的视频,并更改播放器的
src

但也许对于你的项目,你应该考虑使用。这正是你想要的。如果你想留在youtube.com上,你可以在DOM中用
iframe
替换youtube原来的播放器


祝你好运

试图找到一个隐藏的YouTube API非常困难,谷歌对YouTube的下一次调整很可能会破坏你的bookmarklet,你会回到起点。我想你应该走另一条路。谷歌在此处提供了一个API来创建、删除和操纵YouTube播放列表:

如果您以前从未使用过YouTube API,请参见此处:


然后,(最后!)您可以编写一些JavaScript,根据您的命令从reddit创建YouTube播放列表。

感谢您迄今为止的努力!这不符合我的问题,我不能说它解决了问题。我有进一步的信息。“在DOM中创建链接也不起作用,它正在重新加载。”所以如果动态创建链接,然后附加链接,页面会重新加载吗?如果您能够注入iframe,我相信这是可行的。是的,当更改dom时,非上下文中的元素就像常规元素一样,需要重新加载文档。我认为有一些js需要先加入。好的方面是我们可以调用ajax,因为我们在同一个域上^I尝试了iframe方法,或者只是调用隐藏div中的完整文档html并替换当前div,但失败了。这就是为什么我不提供代码,到目前为止还没有成功!提供至少2个有效的yt ID,或者如果你已经有了,请直接告诉我。更新,谢谢,这将是有用的。请参阅更新的评论链接,第一个位置的视频已经死了,但其他仍然是活的。单击YT徽标打开和关闭iFrame感谢回复。我期待着改变整个页面,包括评论,标题。在这里,我将结束一个视频在错误的背景下!在这种情况下,直接用iframe替换视频会更容易!然后,也许你也应该看看所有关于youtube的API,谢谢你的回复。api仅用于嵌入。@Cryptopat它在哪里说的?不,我不打算使用api,因此请深入了解它。这是我的相反目标。不是指责你撒谎,只是我想知道它在哪里写着“仅供嵌入”。如果您不使用API,这是您的决定。祝你的书签好运。对不起,我想说的是“我不会说谎,我不知道!”
player.loadVideoById("Vw4KVoEVcr0", 0, "default");
<video class="video-stream html5-main-video" src="blob:https://www.youtube.com/8e1ef216-1901-ec44-9b76-ea8276e368c6"></video>