我正在尝试创建一个bookmarklet来获取当前youtube网址的视频ID,然后转到查询字符串中包含视频ID的网站。 location.href
帮助我获取当前网址。
javascript:location.href='http://www.sampledomaincom/mybookmarkutility.html?v='+encodeURIComponent(location.href);
如何直接从网址获取视频ID,并将其作为+'&videoid='+
附加到此查询字符串
答案 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);
希望这有帮助!