3

JavaScriptを撮るのは初めてなので、少しラフに見えたら失礼します。

このウェブサイトhttp://www.keepvid.com/は、JavaScript付きのブックマークを提供しており、メディアページでクリックすることにより、YouTubeや他のメディアサイトからビデオをダウンロードできます。ただし、ダウンロードページを新しいタブで開く代わりに、現在のタブで開き、メディアを中断することがわかりました(おそらく、プロバージョンの購入を促すためです)。

JavaScriptを試すチャンスだと思って(以前はブックマークレットしか使っていなかったので)答えを探していましたが、JavaScriptが更新されているようで、古いバージョンのWebサイトでしか機能しなかったようです。

新しいページを開いて、メディアのダウンロードページをロードするブックマークレットを作成しようとしています。

私が解決策として最初に遭遇したコードは次のとおりです。javascript:void(window.open('http://keepvid.com/?url='+escape(window.location)));

しかし、これは機能しませんでした。ブックマークレットの最後&bm=yのURLが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ビデオのコピーのみであり、元のタブはダウンロードページをロードします。これにより、メディアが中断され、少し便利な場合でも、作業が役に立たなくなります。

私はできる限りのことを試みてきましたが、同じブックマークレットに、呼び出された元のタブを指さずに2番目のスクリプトを含めることはできないようです。

だから、私は次のことをするために何をする必要があるのか​​疑問に思っていました:1。新しいタブを作成する2.新しいタブに(元のタブではなく)ダウンロードページをロードさせる3.元のタブをそのままにしてそれだけを使用するwindow.locationをキャプチャします

これが不可能な場合、元のページのコピーを作成し、ダウンロードページへのリダイレクトを含むブックマークメニューのブックマークレットを指すブックマークレットをツールボックスに含める方法はありますか?

4

3 に答える 3

4

このテキストをコピーします: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));
于 2012-04-29T12:14:43.350 に答える
3

この質問は少し古いですが、新しいタブでdict.ccを開くための私の小さなブックマークレットは、質問のタイトルに完全に適合しています。

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

ラッパー関数が何をするのかわかりませんが、ラッパー関数がないと、現在のタブがクリアされます。

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

于 2015-01-25T16:51:12.890 に答える
0

解決策として最初に遭遇したコードは次のとおりです。javascript:void(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')";
于 2012-04-28T12:18:15.807 に答える