javascript - 打开新浏览器窗口的最佳方式是什么?

标签 javascript html browser

我知道大多数链接应该由最终用户决定如何打开,但我们不能否认有时您几乎“必须”强行进入新窗口(例如维护数据在当前页面的表单中)。

我想知道的是,对于在新浏览器窗口中打开链接的“最佳”方式达成的共识是什么。

我知道<a href="url" target="_blank">出来了。我也知道 <a href="#" onclick="window.open(url);">由于各种原因并不理想。我还尝试用 <span onclick="window.open(url);"> 之类的东西完全替换 anchor 然后将 SPAN 样式设置为看起来像一个链接。

我倾向于的一个解决方案是 <a href="url" rel="external">并使用 JavaScript 在标记为“外部”的 anchor 上将所有目标设置为“_blank”。

还有其他想法吗?什么更好?我正在寻找最符合 XHTML 且最简单的方法来执行此操作。

更新:我说 target="_blank"是不行的,因为我读过 several places target 属性将从 XHTML 中逐步淘汰。

最佳答案

我正在使用您建议的最后一种方法。我添加 rel="external"或类似的东西,然后使用 jQuery 遍历所有链接并为它们分配一个点击处理程序:

$(document).ready(function() {
  $('a[rel*=external]').click(function(){
    window.open($(this).attr('href'));
    return false; 
  });
});

我发现这是最好的方法,因为:

  • 语义上很清楚:你有一个外部资源的链接
  • 符合标准
  • 它优雅地降级(你有一个非常简单的链接与常规 href 属性)
  • 它仍然允许用户中键单击链接并在他们愿意的情况下在新标签页中打开它

关于javascript - 打开新浏览器窗口的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/233467/

相关文章:

javascript - 嵌套 AJAX 函数 - 500 内部错误

javascript - .callFake 与 $q 仍然不进入 .then block

html - 菜单在不应该的时候下降?

html - 使用 div 创建框阴影类型效果时遇到问题

javascript - 为什么转换后旧条仍然可见

javascript - 从静态文件夹获取图像文件并在客户端应用程序中显示它们

javascript - 如何使AudioContext()和RequestAnimationFrame()在当前浏览器中运行

url - 如何将鼠标悬停在左下角的网址显示中?

jquery - 如何在jQuery mobile中嵌入youtube视频或本地视频?

jquery - HTML5 的跨浏览器可缩放图像