2012-04-28 76 views
2

这是我第一次尝试JavaScript,所以如果看起来有点粗糙,不好意思。如何使用书签在新选项卡中启动功能?

本网站http://www.keepvid.com/提供了一个JavaScript书签,允许您通过在媒体页面上点击来下载YouTube和其他媒体网站的视频。但是,我发现,不是在新标签中打开下载页面,而是在当前版本中打开它,中断媒体(可能鼓励您购买专业版)。

看到它是一个尝试JavaScript的机会(因为我以前只使用过bookmarklets),我一直在寻找答案,但是我发现的答案似乎只适用于旧版本的网站,因为JavaScript似乎已更新。

我一直在试图制作一个小书签,它打开一个新页面,然后加载媒体的下载页面。

我遇到的一个解决方案是第一个代码:javascript:void(window.open('http://keepvid.com/?url='+escape(window.location)));

但这并没有工作,这是当我注意到书签的最终URL添加&bm=y到URL的末尾,所以我把它编辑成:
javascript:void(window.open('http://keepvid.com/?url='+escape(window.location)+'&bm=y'));

我又看了看小书签原代码::
javascript: (a%20=%20(b%20=%20document).createElement('script')).src%20=%20'http://keepvid.com/js/bm.js',%20b.body.appendChild(a);void(0);

,并意识到,这是呼吁外部脚本(我相信),它将不得不保持完整。

而且从他们的我一直在尝试各种方法,在得到这个工作,到目前为止,这是我有: javascript:void(window.open(window.location));void((a%20=%20(b%20=%20document).createElement('script')).src%20=%20'http://keepvid.com/js/bm.js',%20b.body.appendChild(a));

这个脚本会打开一个新的标签,但新的标签将只是一个YouTube视频的副本,而原始选项卡将加载下载页面,该页面仍会中断媒体,如果稍微方便一些,则会使我的工作无用。

我一直在想尽我所能,但似乎我不能在同一个书签第二个脚本,而不将其指向原来的标签它被要求收回。

所以,我一直想知道我需要做什么以便: 1.创建一个新选项卡 2.让新选项卡加载下载页面(而不是原始文件) 3.保留原始选项卡并将其仅用于捕获window.location

如果这是不可能做到的,他们的方法是在工具箱中创建一个小书签,该小工具创建原始页面的副本,然后指向ab包含重定向到下载页面的书签菜单中的ookmarklet?

+0

不要对你有一种技术解决方案,但是据下载视频更好的书签,你可能想看看这个:http://deturl.com/bookmarklet-to -directly-download-videos-from-youtube.asp – 2012-04-28 12:41:52

+0

另一种评论。当我在YouTube上使用Firefox进行测试时,您的第一个书签工作正常。请注意,在Firefox中,您不能将小书签代码粘贴到URL中,以便测试您以前可以执行的操作。您必须先将它输入到实际的书签中。在Chrome中,只有先手动键入“javascript:”才能执行此操作。如果您尝试粘贴小书签代码,则“javascript:”部分将被删除。 – 2012-04-28 12:46:07

+0

首先,我刚刚检查了你给我的链接,这似乎是一个非常好的书签下载YouTube视频。但目前,我真的只想解决这个问题,看看我能用JavaScript做些什么。其次,为了澄清,每当我编辑JavaScript时,我都会将它粘贴到书签中,而不是URL。关于第一个书签工作,我会把你给我的图片比较“mplungjan”。 [(KeepVid Code的图片)](http://i.imgur.com/77g5f.png)| [(我的代码图片)](http://i.imgur.com/GuxYo.png)。请注意下载列表中的差异? – Ylj 2012-04-28 19:53:04

回答

3

复制这个文本的当前窗口:http://keepvid.com/js/bm.js

变化

<form method='post' 

<form method='post' target='_blank' 

则可以将文件在自己的服务器上,并以同样的方式与原书签添加脚本,或者您可以将代码压缩成一个独立的书签,这样

javascript:eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return%20r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new%20RegExp('\\b'+e(c)+'\\b','g'),k[c]);return%20p}('o%20i(a,b,c){N{7%20u=a.v(b);7%20w=u[1].v(c);x%20w[0]}O(P){x\'\'}}o%20p(){7%20q=d.Q("R");q.9="<z%20S=\'T\'%20U=\'V\'%20W=\'r://A.g/?B="+C(h.j)+"&X=y\'%20Y=\'D\'><k%20l=\'s\'%20t=\'Z\'%20m=\'"+8+"\'%20/><k%20l=\'s\'%20t=\'2\'%20m=\'"+2+"\'%20/><k%20l=\'s\'%20t=\'5\'%20m=\'"+5+"\'%20/><k%2010=\'11-12-E%20F-G-13%20F-G-14\'%20l=\'H\'%20m=\'15%2016%2017\'%20/></z>";d.e.19(q);h.1a["D"].H()}7%20d=h;6(d.j.I.1b(/J.g/i)){7%208=i(d.e.9,\';8=\',\'&\');6(8==\'\')8=i(d.e.9,\'"8":%20"\',\'"\');7%202=i(d.e.9,\'2"%201c="\',\'"\');6(2==\'\')2=i(d.e.9,\'1d"%202="\',\'"\');7%205=i(d.e.9,\'n=\',\'&\');6(5==\'\')5=i(3.f,\'n":%20"\',\'"\').K("\\\\/","/");6(5==\'\'){7%203=1e;6(!3&&1f%20L!=\'1g\'){3=E%20L()}3.1h("1i","r://1j.J.g/1k?8="+8+"&5=18",1l);3.1m=o(){6(3.1n==4){2=i(3.f,\'&2=\',\'&\');6(2==\'\')2=i(3.f,\'2=\',\'&\');5=i(3.f,\'n=\',\'&\');6(5==\'\')5=i(3.f,\'n":%20"\',\'"\').K("\\\\/","/");p()}};3.1o()}M{p()}}M{h.j.I=\'r://A.g/?B=\'+C(1p.j)}',62,88,'||title|kvajax||fmt|if|var|video_id|innerHTML|||||body|responseText|com|document||location|input|type|value|fmt_stream_map|function|finishkv|gd|http|hidden|name|a1|split|a2|return||form|keepvid|url|escape|kvdl|new|yt|uix|submit|href|youtube|replace|XMLHttpRequest|else|try|catch|err|createElement|div|method|post|target|blank|action|bm|id|vid|class|master|sprite|button|tooltip|Download|with|KeepVid||appendChild|forms|match|content|ltr|false|typeof|undefined|open|GET|www|get_video_info|true|onreadystatechange|readyState|send|window'.split('|'),0,{})) 

我收拾它使用此:http://javascriptcompressor.com/

对于治疗非YouTube网站以同样的方式,也改变

document.location.href='http://keepvid.com/?url='+escape(window.location); 

window.open('http://keepvid.com/?url='+escape(window.location)); 
+0

非常感谢您提供的书签代码。但是,由于这对我来说更多地了解JavaScript的工作原理,您是否介意如何将代码压缩为书签? – Ylj 2012-04-29 22:37:23

+0

使用我给的链接。有一个我不得不添加的分号。 – 2012-04-30 02:44:38

0

我遇到作为溶液是第一个代码: 的javascript:无效(window.open('http://keepvid.com/?url='+escape(window.location的)));

但这并没有工作

没有以何种方式工作?如果浏览器阻止弹出窗口,您将无法成功。 如果没有,该方法应该可以工作。

这里是一个可能的另一种方法 - 仍然不能保证工作

您需要存储在服务器上的脚本更好。 脚本加载到使用

(function() {var scr=document.createElement('script');scr.src='http://www.yourserver.com/yourserverprocess.php?loc=escape(window.location.href;document.getElementByTagname('head')[0].appendChild(scr); })(); 

那么你的服务器上,你可以返回(假设PHP)

header("content-type: text/javascript"); 
echo "window.open('http://yourserver.com/convert.php?loc=".$_GET["loc"],'_blank')"; 
+0

我使用的代码打开了一个新选项卡并加载了下载页面:(keepvid.com/?url=http%3A//www.youtube.com/...)。但是,此方法未显示已加载页面上的可用下载。 KeepVid.com的书签加载下载页面,然后显示可供选择的下载列表(关于视频质量)。这是一张图片比较,让它更清晰一点。[(KeepVid Code的图片)](http://i.imgur.com/77g5f.png)| [(我的代码图片)](http://i.imgur.com/GuxYo.png)注意具有不同结果的相同URL。 – Ylj 2012-04-28 19:50:43

+0

啊,我没有意识到你实际上是想用keepvid而不是用你自己的。 - 这可能有很多原因。也许有些参数是在第一个脚本中设置的,你没有捕捉到。现在看我已经太迟了 - 也许你可以告诉我你最终的结果是什么?逆向工程还是什么? – mplungjan 2012-04-28 21:42:24

+0

这只是我引入JavaScript的练习。我正在寻找的结果是该函数在创建的新选项卡中运行,而不是启动书签的第一个选项卡。因此,如果我在服务器上托管了“脚本1”,则为其提供了打开命令一个重复的选项卡,然后结束并加载“脚本2”,其中将包含KeepVid代码,这将加载第二个选项卡中的下载页面而不是第一个,因为它是在第二个选项卡中启动的?所以这项工作 - 标签1加载脚本1;脚本1创建制表符2;选项卡2加载脚本2;脚本2加载下载页面 – Ylj 2012-04-29 08:03:15

0

这个问题是有点老了,但我的小书签在新标签页中打开dict.cc完全符合的问题标题。

javascript:(function(){window.open("http://www.dict.cc/?s="+encodeURIComponent(prompt("Enter word to look for:")))})(); 

我不知道包装的功能是什么,但是没有它,当前选项卡会被清除。

源:https://www.mattcutts.com/blog/javascript-bookmarklet-basics/

相关问题