如果超链接做同样的事情,window.location.assign 有啥用?

Posted

技术标签:

【中文标题】如果超链接做同样的事情,window.location.assign 有啥用?【英文标题】:What is the use of window.location.assign if hyperlinks do the same thing?如果超链接做同样的事情,window.location.assign 有什么用? 【发布时间】:2021-07-08 02:17:32 【问题描述】:

许多网站都提供指向其他网站的外部链接。其中一些使用超链接:

<a href="https://example.com">Click me</a>

其他人使用按钮:

<button onclick="window.location.assign('https://example.com');">Click me</button>

原来按钮使用window对象加载页面,而超链接使用&lt;a&gt;元素。

根据 W3C 发布的 html5 验证器,按钮元素不应是 a 元素的子元素。

这失败了:

<button>
  <a href="https://***.com">See New Questions</a>
</button>

window.location.assign与a元素相同,如下sn-p所示:

$('button').click(function() 
  window.location.assign('https://***.com');
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>See New Questions</button>
<a href="https://***.com">See New Questions</a>

那么,为什么 W3C 更喜欢 window.location.assign() 而不是 &lt;a&gt; 元素用于 HTML 按钮?

【问题讨论】:

你试过***.com/questions/7703689/…、***.com/questions/4505798/…和developer.mozilla.org/en-US/docs/Web/API/Location/assign吗? 可以将链接设置为看起来像一个按钮。 getbootstrap.com/docs/4.0/components/buttons/#button-tags javascript 无法在 elinks/links2 等非 javascript(控制台)浏览器上运行 【参考方案1】:

window.location.assign 不仅仅用于 HTML,您还可以使用它来动态更改网址。例如,您可能希望在登录后将用户重定向到另一个页面,但您需要先完成登录过程,以便您执行该过程,并在登录成功后使用此功能更改为另一个地址。像这样的用例还有很多。

另一个区别是当您使用此方法时,它不适用于已禁用 javascript 的浏览器。

由于第三个原因,可以有多种方法来完成同一件事,人们可以选择他们喜欢的方法,并对您应该如何执行某些操作有自己的看法。

【讨论】:

好的,所以尽可能选择 。正确的?因为它可以在没有 js 的情况下工作。 过去使用 并尝试在没有 JS 的情况下拥有一个很棒的网站是一件非常重要的事情,因为旧的浏览器,但这不再是一件大事了,因为搜索引擎和浏览器都是完全支持 JS,但在 js 上使用标签仍然是一个好习惯

以上是关于如果超链接做同样的事情,window.location.assign 有啥用?的主要内容,如果未能解决你的问题,请参考以下文章

你能在不影响历史的情况下使用哈希导航吗?

在 javascript 警报中显示超链接

Java中poi读取含有失效超链接的Excel2007报错

如果无效元数据可以做同样的事情,为啥需要在 Impala 中刷新

如何在 Windows Phone 的 Messagebox 中添加超链接按钮?

超链接可以多长?