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's反弹location到雅虎。但是,当我点击链接时,我仍然被带到谷歌。为什么?

我为什么要这样做?这部分只是一个实验,部分是我想在实践中用来保护用户隐私的东西:通过创建一个中间保镖页面,引用者与目标服务器屏蔽。

这是链接:

http://jsbin.com/efaful/1

4

1 回答 1

11

因为你需要在做任何事情后返回 falseonclick以防止链接的默认行为。

<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 回答