Javascript 为什么这个链接指向谷歌而不是雅虎? 功能数据盎司(dest) { //注意:dest假定为encoded。 变量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; 返回false; }

Javascript 为什么这个链接指向谷歌而不是雅虎? 功能数据盎司(dest) { //注意:dest假定为encoded。 变量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; 返回false; },javascript,html,events,Javascript,Html,Events,是的,href是谷歌的,但我有一个onclick处理程序,它劫持了点击链接,导航到一个数据URI,该URI将窗口的位置弹回雅虎然而,当我点击链接时,我仍然会被带到谷歌。为什么? 我为什么要这样做?这部分只是一个实验,部分是我想在实践中使用的保护用户隐私的东西:通过创建一个中间的bouncer页面,推荐人可以与目标服务器隔离 以下是链接: 因为在单击onclick中执行任何操作后,需要返回false,以防止链接的默认行为 <a onclick="dataBounce('http://yaho

是的,
href
是谷歌的,但我有一个
onclick
处理程序,它劫持了点击链接,导航到一个数据URI,该URI将
窗口的
位置
弹回雅虎然而,当我点击链接时,我仍然会被带到谷歌。为什么?

我为什么要这样做?这部分只是一个实验,部分是我想在实践中使用的保护用户隐私的东西:通过创建一个中间的bouncer页面,推荐人可以与目标服务器隔离

以下是链接:


因为在单击
onclick
中执行任何操作后,需要返回false,以防止链接的默认行为

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

因为在
onclick
中执行任何操作后都需要返回false,以防止链接的默认行为

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

@先生,太糟糕了!但是如果
窗口
位置
发生了变化,并且加载了一个全新的DOM,它怎么会执行默认操作呢?如果发生这种情况,当前的JS控制流不会被中止,从而取消默认行为吗?@MrCode想让我再次删除我的设置吗?;)@adlwalrus如果您不阻止默认行为,浏览器将基本上覆盖您的重定向。@MrCode Aww,太糟糕了!但是如果
窗口
位置
发生了变化,并且加载了一个全新的DOM,它怎么会执行默认操作呢?如果发生这种情况,当前的JS控制流不会被中止,从而取消默认行为吗?@MrCode想让我再次删除我的设置吗?;)@adlwalrus如果您不阻止默认行为,浏览器将基本上覆盖您的重定向。@VoronoiPotato它检测IE…好吧,让我换一句话,这是如何检查IE的?从搜索引擎优化的方向来说,我认为这也会引发一系列安全方面的危险信号,因为这种技术也可以用来劫持用户的浏览器,并将其发送到他们不想去的地方。我会对此做一些研究,确保你不会碰到任何谷歌的“质量问题”警告。@VoronoiPotato嗯,这与以下事实有关:根据规范,数组/对象文字不应该有尾随逗号,但在某些喜欢在窥视孔中插入螺丝刀的浏览器中,它被错误地解析,好吧,其余的我真的不完全理解。。。但我曾经在某个地方的博客上看到过它,然后把它藏在我的代码片段工具箱里。希望有用?如果有帮助的话,IIRC crockford在他的网站上发表了一篇文章,专门讨论JS中的逗号,但这篇文章更多的是关于哲学,而这篇文章只关注实际情况@mori57 SEO在任何方面/形状/形式上都不是我真正喜欢的,但我相信有些人会喜欢这个警告,所以保持乐观。@VoronoiPotato它检测IE…好吧,让我换一句话,这是如何检查IE的?从SEO的方向来说,我认为这会抛出一堆危险信号,安全方面也是如此,因为这种技术也可以用来劫持用户的浏览器,并将其发送到他们不想去的地方。我会对此做一些研究,确保你不会碰到任何谷歌的“质量问题”警告。@VoronoiPotato嗯,这与以下事实有关:根据规范,数组/对象文字不应该有尾随逗号,但在某些喜欢在窥视孔中插入螺丝刀的浏览器中,它被错误地解析,好吧,其余的我真的不完全理解。。。但我曾经在某个地方的博客上看到过它,然后把它藏在我的代码片段工具箱里。希望有用?如果有帮助的话,IIRC crockford在他的网站上发表了一篇文章,专门讨论JS中的逗号,但这篇文章更多的是关于哲学,而这篇文章只关注实际情况@mori57 SEO在任何方面都不是我的专长,但我相信有些人会喜欢这个警告,所以保持乐观。
<a href="http://google.com" onclick="return dataBounce('http://yahoo.com');" />link</a>