Bookmarklet抓取Youtube URL并转到另一个网站

时间:2014-05-25 10:45:07

标签: javascript youtube bookmarklet

我正在尝试创建一个bookmarklet来获取当前youtube网址的视频ID,然后转到查询字符串中包含视频ID的网站。 location.href帮助我获取当前网址。

    javascript:location.href='http://www.sampledomaincom/mybookmarkutility.html?v='+encodeURIComponent(location.href); 

如何直接从网址获取视频ID,并将其作为+'&videoid='+附加到此查询字符串

1 个答案:

答案 0 :(得分:2)

您希望 bookmarklet 直接从网址获取视频ID,并将其作为+'&videoid='+ 附加到此查询字符串。

window.location.search为我们提供了搜索部分。我们剥离了前导?,将其拆分为&,最后将每个结果值除以=。如果现在有一个标识符v,那么我们继续(使用它的值),否则我们会发出错误警告。
现在让我们应用它,重新考虑代码并将其放入IIF(以克服许多问题):

// 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);

希望这有帮助!