为啥在超链接中使用 window.location?
Posted
技术标签:
【中文标题】为啥在超链接中使用 window.location?【英文标题】:Why use window.location in a hyperlink?为什么在超链接中使用 window.location? 【发布时间】:2011-03-29 16:29:27 【问题描述】:我正在浏览一个我接管的网站,并在其中一个页面中看到了这个部分:
<a href="javascript:window.location='<%=GetSignOutUrl()%>';">
// img
</a>
显然,任何曾在没有 javascript 的情况下使用过该网站的人都无法正常注销(令人惊讶的是,从未出现过这种情况)。
所以首先想到的是
<a href="<%=GetSignOutUrl()" onclick="javascript:window.location='<%=GetSignOutUrl()%>';">
// img
</a>
然后我意识到我根本不知道为什么要保留 javascript 调用。我只是有点困惑,为什么在常规链接本来可以正常工作的情况下首先会这样写。与普通链接相比,window.location 有什么好处?
这也是我在网站上看到的唯一一个地方(到目前为止)。
编辑:我之前的程序员非常称职,这就是为什么我想知道是否有什么我没有考虑到,或者他只是做了一个简单的疏忽。
【问题讨论】:
可能是试图在浏览器状态栏中隐藏 URL? @Russ,URL 不会像任何普通 html 一样出现在呈现的 HTML 中吗?因此,当点击时,浏览器会像往常一样在地址栏中显示 URL? 这是唯一的链接,还是他们因此而这样做? @DaveDev - 它肯定会在源代码中,但是如果这个网站是内部的,用户可能会被锁定并且无法查看源代码或保存页面(我有过这种经验在过去)。我在这里冒险猜测 :) @Brandon - 这是一个内部网络应用程序吗? 我也在猜测!! ...相信我,这是我必须阅读的一些代码的日常练习! :-) 【参考方案1】:有三种可能:
-
开发人员试图在发送用户之前强制使用 Javascript。
开发人员试图屏蔽链接中的 href。可能是这样不能有效爬取,或者状态栏有关系。
开发者是个不守规矩的人。
我会删除它,看看它是否坏了。但话说回来,我是个墨守成规的人。
【讨论】:
我同意第 2 点,条件是将第 3 点的“不守规矩”改为“不称职”(我喜欢创造具有讽刺意味的术语 :-))......无论如何我同意第二点的原因是他们可能不知道 Robots.txt 文件是什么,这是他们可以阻止 Google 不断尝试注销的唯一方法?【参考方案2】:我的猜测是,如果开发人员不知道要考虑客户端执行 javascript 的能力,他们可能不知道什么是 href。这不太可能,但并非不可能。
【讨论】:
【参考方案3】:可能是因为可能使用了多个域,而代码中哪一个不清楚或不容易获得?
【讨论】:
但无论如何,<%=GetSignOutUrl()%>
都会考虑这一点。 <%=GetSignOutUrl()%>
只返回一个 URL(看起来),因为 javascript:window.location
需要一个 URL 才能运行
是的,你也可以有一个相对的退出链接,它不会打扰域。【参考方案4】:
这可能是为了向搜索引擎隐藏链接。
【讨论】:
以上是关于为啥在超链接中使用 window.location?的主要内容,如果未能解决你的问题,请参考以下文章
react中为啥不window.location.href来跳转,还要用react-router来跳转
为啥移动端 window.location.href 不起作用
为啥我在js里面用window.location.reload(true);不刷新页面?