Javascript Bookmarklet获取Youtube URL并转到另一个网站
我正在尝试制作一个书签,以获取当前youtube url的视频id,并使用查询字符串中的视频id访问网站Javascript Bookmarklet获取Youtube URL并转到另一个网站,javascript,youtube,bookmarklet,Javascript,Youtube,Bookmarklet,我正在尝试制作一个书签,以获取当前youtube url的视频id,并使用查询字符串中的视频id访问网站location.href帮助我获取当前url javascript:location.href='http://www.sampledomaincom/mybookmarkutility.html?v='+encodeURIComponent(location.href); 如何直接从url获取视频ID,并将其作为+'&videoid='+附加到此查询字符串。您需要一个书签来:直
location.href
帮助我获取当前url
javascript:location.href='http://www.sampledomaincom/mybookmarkutility.html?v='+encodeURIComponent(location.href);
如何直接从url获取视频ID,并将其作为
+'&videoid='+
附加到此查询字符串。您需要一个书签来:直接从url获取视频ID,并将其作为+'&videoid='+
附加到此查询字符串
window.location.search
提供了搜索部分。我们去掉前导的?
,按&
拆分,最后按=
拆分每个结果值。如果现在有一个标识符v
,那么我们继续(使用它的值),否则我们会发出错误警报。现在让我们应用它,重新考虑代码并将其放入IIF中(以克服许多问题): 以及更新的正则表达式版本(略短):
希望这有帮助 这是一个懒散问题的懒散答案。对于“v=xyz”和“v=xyz-2&a=b”,您的正则表达式失败。对于“sav=y&v=xyz”这样的更为理论化的情况,它也失败了。(对于后人来说,如果正则表达式后来被更改,当前答案中的正则表达式是
/v=(\w*)&/
)@DG:You对-
字符的看法是正确的(我不知道YT使用了它),理论上是失败的。我只是无法重现v=xyz
-失败。不管怎样,用正则表达式,用一个更健壮的程序。我只是不能把它缩小,而把自己限制在ES3(不使用map等)。谢谢你给了我一个机会,让我在投票前挽回自己的损失。
// alert edition:
javascript:(function(L,t,i){for(i=(t=L.search.slice(1).split('&')).length;i--&&(t[i]=t[i].split('='))[0]!=='v';);~i&&(t=t[i][1])?alert('http://www.sampledomain.com/mybookmarkutility.html?v='+encodeURIComponent(L.href)+'&videoid='+t):alert('No videoID found.')})(window.location);
// working edition:
javascript:(function(L,t,i){for(i=(t=L.search.slice(1).split('&')).length;i--&&(t[i]=t[i].split('='))[0]!=='v';);~i&&(t=t[i][1])?L.href='http://www.sampledomain.com/mybookmarkutility.html?v='+encodeURIComponent(L.href)+'&videoid='+t:alert('No videoID found.')})(window.location);
// alert edition:
javascript:(function(L,t){(t=/[?&]v=([^&]+)/.exec(L.search))?alert('http://www.sampledomain.com/mybookmarkutility.html?v='+encodeURIComponent(L.href)+'&videoid='+t[1]):alert('No videoID found.')})(window.location);
// working edition:
javascript:(function(L,t){(t=/[?&]v=([^&]+)/.exec(L.search))?L.href='http://www.sampledomain.com/mybookmarkutility.html?v='+encodeURIComponent(L.href)+'&videoid='+t[1]:alert('No videoID found.')})(window.location);