ブックマークレットからポップアップウィンドウを開くようにしたいが、ページはjqueryモーダルのように読み込まれます。つまり、醜いブラウザの境界線がないことを意味します。彼らはどうやってこれをするのですか?モーダルブックマークレットとインスタントスクレイピング?
例をご覧ください。Amazonはどのようにこのようにしていますか?
http://www.amazon.co.uk/wishlist/get-button
また、彼らは明らかに情報を取得するためにページをスクレイピングしているが、ページのロードがほぼ瞬時にして、彼らは、ユーザーが何らかの形で読み込むすべてのページをキャッシュしていますか?彼らは他にどのようにこれを達成するだろうか?私は、単純なHTML-DOMを試してみたが、それはこれがJSアマゾンの使用であり、これまでのインスタント
からです:
javascript:(function(){var w=window,l=w.location,d=w.document,s=d.createElement('script'),e=encodeURIComponent,o='object',n='AUWLBookenGB',u='https://www.amazon.co.uk/wishlist/add',r='readyState',T=setTimeout,a='setAttribute',g=function(){d[r]&&d[r]!='complete'?T(g,200):!w[n]?(s[a]('charset','UTF-8'),s[a]('src',u+'.js?loc='+e(l)+'&b='+n),d.body.appendChild(s),f()):f()},f=function(){!w[n]?T(f,200):w[n].showPopover()};typeof s!=o?l.href=u+'?u='+e(l)+'&t='+e(d.title):g()}())
Beautifiedと手動deobfuscated:私は少し持って
javascript:(function() {
var w = window,
l = w.location,
d = w.document,
s = d.createElement('script'),
e = encodeURIComponent,
o = 'object',
n = 'AUWLBookenGB',
u = 'https://www.amazon.co.uk/wishlist/add',
r = 'readyState',
T = setTimeout,
a = 'setAttribute',
g = function() {
if (d[r] && d[r] != 'complete') {
T(g, 200);
} else if(!w[n]) {
s[a]('charset', 'UTF-8');
s[a]('src', u + '.js?loc=' + e(l) + '&b=' + n);
d.body.appendChild(s);
f();
} else {
f();
}
},
f = function() {
if (!w[n]) {
T(f, 200);
} else {
w[n].showPopover();
}
};
if (typeof s != o) {
l.href = u + '?u=' + e(l) + '&t=' + e(d.title);
} else {
g();
}
}())
codef0rmer - 質問は、秘密は何ですか?キャッシュですか?私はこれがマルチタブブラウザでは不可能であるとは思えませんでした。ブックマークレットを追加する前にロードしたページでチェックしましたが、それはまだ瞬時でした。 –
私は秘密がクライアント側に必要なデータをプッシュするだけであることを意味しますできるだけ早くそれは、キャッシング、高速サーバーまたはCDNのものかもしれません。同様のことをローカルで実行しようとしたときはどうでしたか? – codef0rmer
標準のWebページを使用してポップアップして画像を抽出するなど、シンプルなhtml-domを使用すると、最速で約4-5秒です。今日の世界は長くて長い時間です –