1
<a onclick="dataBounce('http://yahoo.com');" href="http://google.com">Yahoo? :-/</a>

<script>
function dataBounce(dest) 
{
  // Note: dest is assumed to be encodeURI()ed. 
  var ie = !-[1,];

  var bouncer = 'data:text/html;charset=utf-8,%3C%21doctype%20html%3E%3Cscript%3Ewindow.location%20%3D%20%27'+ dest +'%27%3B%3C/script%3E';
  console.log('bouncer: ' + bouncer);
  window.location = !ie ? bouncer : dest;
  return false;
}
</script>

ええ、これhrefはグーグルですがonclick、リンクをクリックしてハイジャックし、ヤフーにバウンスするデータURIに移動するハンドラーがありwindowますlocationしかし、私がリンクをクリックすると、私はまだグーグルに連れて行かれます。なんで?

なぜ私はこれをしたいのですか?これは一部は単なる実験であり、一部はユーザーのプライバシーを保護するために実際に使用したいものです。中間のバウンサーページを作成することで、リファラーは宛先サーバーから保護されます。

リンクは次のとおりです。

http://jsbin.com/efaful/1

4

1 に答える 1

11

onclickリンクのデフォルトの動作を防ぐために、で何かを行った後にfalseを返す必要があるためです。

<a href="http://google.com" onclick="dataBounce('http://yahoo.com'); return false;" />link</a>

または、dataBounce関数を返しfalseて:

<a href="http://google.com" onclick="return dataBounce('http://yahoo.com');" />link</a>
于 2012-11-28T14:21:59.167 に答える