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

2024-04-25

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

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

我知道<a href="url" target="_blank">出来了。我也知道<a href="#" onclick="window.open(url);">由于多种原因并不理想。我也尝试过用类似的东西完全取代锚点<span onclick="window.open(url);">然后将 SPAN 设置为看起来像链接的样式。

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

还有其他想法吗?什么更好?我正在寻找最符合 XHTML 且最简单的方法来做到这一点。

更新:我说 target="_blank" 是不行的,因为我已经读过几个地方 http://www.sitepoint.com/article/standards-compliant-world/3/target 属性将逐步从 XHTML 中淘汰。


我正在使用你建议的最后一种方法。我添加 rel="external" 或类似的内容,然后使用 jQuery 迭代所有链接并为它们分配一个单击处理程序:

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

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

  • 语义上非常清楚:您有一个指向外部资源的链接
  • 它符合标准
  • 它会优雅地降级(您与常规的链接有一个非常简单的链接)href属性)
  • 它仍然允许用户中键单击链接并在新选项卡中打开它(如果他们愿意)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打开新浏览器窗口的最佳方式是什么? 的相关文章

  • 进行 URL 重写

    当我点击网站上给定条目的评论部分时 URL 如下所示 http www com comments index php submission Portugal 20Crushes 20North 20Korea submissionid 62
  • 如何在 Angular 4 材料的 Stepper 中提交表单

    如何在角材料的步进器中提交表单数据 我正在遵循角材料的示例https material angular io components stepper examples https material angular io components
  • 将 CSS 导入 HTML 不起作用

    我正在尝试将 CSS 文件 import 导入 HTML 但它不起作用 我确实尝试过链接路径 但它也不起作用 但这种格式似乎工作为 http U5 L ttJS http 127 0 0 1 54149 assets pages U5 JS
  • 一键切换两个复选框,无需js

    有没有办法切换两个combined一键点击复选框 我有一个小日历 我想用复选框选择几周 一周可以是两个月 所以同一周我有两个复选框 我怎样才能安全地将它们结合起来 我正在使用这个抽象 HTML
  • JavaScript:异常排序

    假设我有一个对象数组 为了更简单的显示目的 我将其显示为数组 TEST NEW ALPHA ZOO WHATEVER 我需要按字母顺序对其进行排序 简单的部分 但是 我需要以某种方式对其进行排序 即某个单词 可以说NEW将会在最后结束 AL
  • 如何将Javascript代码转换为Jquery代码?

    请帮助我 这是Javascript代码 我需要将此代码更改为Jquery eval parent document forms 0 strKey intDimensionId value strIds intDimensionId 高性能
  • 在 Chrome 中使用 window.open 打开本地 HTML 文件

    我想通过 Javascript 打开本地 HTML 文件 使用 window open file C Users wins Desktop exclusiveWordpress html mywindow 但它会打开一个带有空白页面的新窗口
  • 显示文本,一条虚线,然后显示跨越页面宽度的更多文本[重复]

    这个问题在这里已经有答案了 我想要显示一些文本 然后是虚线 然后在同一行上显示更多文本在 HTML 页面上 例如 Name Engineer 我希望 名称 与左边框左对齐 工程师 与右边框右对齐 然后浏览器能够用重复的点填充两者之间的间隙
  • 解码URIComponent抛出错误“URI格式错误”

    As unescape已被弃用 我已选择decodeURIComponent 但它没有按预期工作 decodeURIComponent无法解码以下 URI 组件 Coast 20Guard 20Academy 20to 20hold 20a
  • 使用 CSS 定位文本节点

    我正在研究容器对象的 CSS 我大部分时间都在工作 具体来说 我正在查看测试用例 1 2 和 3 它们都有文本节点 有没有办法像对待任何子元素一样对待文本节点 有什么方法可以调整 CSS 以使文本节点及其兄弟节点正常工作吗 除非有一个 CS
  • PapaParse 与 Angular JS

    喜欢 PapaParse 漂亮的 CSV 解析器和解解析器 任何人都可以帮助我将其与 Angular JS 结合起来吗 我喜欢让 PapaParse 以 Angular 方式工作 正在尝试解决方案 实际上我没有做任何花哨的事情来加载它 只需
  • 如何在 jQuery 中获取会话中的值

    我是 jQuery 的初学者 我想在 HTML 页面中设置值 并且必须在另一个 HTML 页面中获取它们 这是我现在正在尝试的代码片段 要在会话中设置值 session set userName uname val 要从会话中获取值 ses
  • 将背景图像保留在底部

    我一直在研究将图像保留在底部页面的解决方案 我目前得到的代码是 footer background image url images footer png background repeat repeat x position absolu
  • 需要帮助在 D3.js 条形图中将 x 轴刻度与条形对齐

    我有一个可用的线性条形图D3 js http d3js org 它也有基于时间的 x 轴 条形图绑定到计数属性 而轴绑定到日期属性 轴上的刻度未与条形对齐 知道如何将它们两者排列起来吗 这是 jsFiddle http jsfiddle n
  • CSS/Javascript 将单词与特定字符对齐

    我如何使用 CSS Javascript 将 html 中的单词与该单词中的任意字符对齐 更改对齐字符的样式 例如使其粗体 以与其他字符形成对比 如本例中所示 对齐和粗体 k e t 和 f stack overflow stack ove
  • 计算 DIV 元素的最大/最小高度

    问题 给定一个具有固定高度的 DIV 元素 其中包含未知数量的子元素 这些子元素的大小相对于其高度 计算 DIV 可以调整大小的最大 最小高度 而不违反其子元素的任何最大 最小值元素 Example求 DIV A 的最大 最小高度 Answ
  • Node Express 和 csurf - 403(禁止)无效的 csrf 令牌

    浏览并尝试了我在这里和其他地方通过谷歌搜索能找到的所有东西 但我就是无法克服这一点 我正在使用 Node Express EJS 并尝试在使用 jQuery ajax 发布的表单上使用 csurf 无论我如何配置 csurf 我都会收到 4
  • 智能表 - 预选特定行

    我正在使用智能表 我需要预先选择特定行 因此 在加载我的列表后 我循环进入它并设置isSelected当我到达我想要选择的项目时属性 Preselect a row for var i 0 len scope displayCollecti
  • AngularJs 位置路径更改,无需重置所有控制器

    我的问题的简短版本是 如何更改 URL 而不需要触发路由更改或不需要运行当前显示页面上的所有控制器 Details 我有一个模板 显示在
  • 鼠标悬停在图像上显示 x

    我想在图像上显示 X 标记 尺寸为 24x24 为此我采用 li 元素和 in 元素 li style display inline block background 283038 border 1px solid 161b1f margi

随机推荐