【问题标题】:What's the final word on JavaScript-initiated redirects?JavaScript 发起的重定向的最终结论是什么?
【发布时间】:2013-09-25 23:03:06
【问题描述】:

考虑

<a href="some-page.html">Go</a>

对比

<script>

$(function(){

  $('a').click(function(e){

    e.preventDefault();

    var self = $(this);

    window.setTimeout(function(){

      window.location = self.attr('href');

    }, 1000);
  });
});

</script>

<a href="some-page.html">Go</a>

显然第二个的目的是延迟重定向(特别是允许动画完成)。这对于禁用 JavaScript 的浏览器来说也很好。

但是是否存在任何特定情况下 JavaScript 链接会被浏览器拒绝以防止弹出窗口?如果是这样,哪些浏览器有问题?当您只是在自己的网站上导航时,是否可以采取一些措施来防止浏览器怀疑?

一个明确的答案或包含有关浏览器如何处理/拒绝页面重定向的任何知识的答案的链接会很棒。

【问题讨论】:

  • “但是是否存在任何特定情况下 JavaScript 链接会被浏览器拒绝,从而阻止弹出窗口” 不,因为它不是弹出窗口。但是,这会破坏链接的默认功能,因为您无法在新选项卡中单击它以在新选项卡中打开,我觉得这很烦人。绝对不值得仅仅为动画而做。这是我建议使用同步 ajax 调用而不是在成功时执行 window.location 的异步调用的少数情况之一。
  • @KevinB:呵呵。我从来没有意识到中键点击链接有什么作用。我总是右键单击并选择“在新选项卡中打开”。这很漂亮。虽然可以制作 JS,以便只有主(左)按钮触发延迟/等。

标签: javascript jquery browser href


【解决方案1】:

但是有没有特定的场景会获取 JavaScript 链接 被阻止弹出窗口的浏览器拒绝?

您的代码不会创建弹出窗口,而只会更改用户看到的内容:

window.location = self.attr('href');

这段代码做的:

var newWin = window.open('..');

了解更多信息:window.open method

【讨论】:

  • 好的。尽管我同意无法在新窗口中打开,但这个特定网站优先考虑某些体验,而不是喜欢在 Web 上打开新窗口的 Web 开发人员的挫败感(我也是这些开发人员之一)。您能否详细说明一种可能的解决方法,以便我的 jQuery 装饰检测到用户尝试打开新窗口的意图?我怀疑这是不可能的,但认为这值得一问......
  • 你想在你的页面中实现什么?
  • 理想情况下,动画结束,然后是window.location 更改,除非用户尝试在新窗口中打开,在这种情况下删除动画并打开链接...
猜你喜欢
  • 2014-05-29
  • 2020-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-07
  • 2010-10-03
  • 1970-01-01
相关资源
最近更新 更多