【问题标题】:HTML links with target带有目标的 HTML 链接
【发布时间】:2015-10-26 03:48:41
【问题描述】:

我之前在另一个地方问过这个问题,但没有得到有用的答复。

HTML 链接上“target”属性的一种可能用途是指定一个命名窗口,例如:

    <a href="somepage.html" target="mySpecialWindow">Click here</a>

可能命名目标的原因,而不是仅仅使用“_blank”,是您希望能够为其他链接引用该 SAME 窗口。例如,假设您有一个希望始终保持在视图中的主页,其中包含指向多个帮助页面的链接,并且您希望所有这些帮助页面都在特定的辅助窗口中打开。因此,单击第一个帮助链接会打开辅助窗口,单击第二个帮助链接会将辅助窗口的内容替换为不同的帮助页面,单击第三个帮助链接会再次替换该辅助窗口的内容,等等。

但现有的浏览器(Firefox、Chrome 等)不这样做。如果您在具有特定(相同)窗口名称的链接上使用目标属性,则单击这些链接会在每次单击时打开一个新的单独窗口,即使目标名称相同。换句话说,它的行为与您使用 target="_blank" 完全一样。

这是为什么?如果命名窗口的行为与使用 target="_blank" 完全相同,那么能够命名目标窗口有什么意义?

有没有办法让链接实际使用已打开的同名窗口而不是打开另一个窗口?

【问题讨论】:

  • 一些 UX 最佳实践实际上建议不要过度使用它,让用户选择是否要在新窗口/标签中打开链接。例如,默认情况下,SO 问题和答案中的链接会在同一窗口中打开,我不知道原因,但我最好的猜测是这个。

标签: html hyperlink target


【解决方案1】:

你用 Javascript 试过了吗?

//You keep a reference to the window
var mySpecialWindow = undefined;

function openInSameWindow(url)
{
    //First time opening
    if ( typeof( mySpecialWindow ) === "undefined" )
    {
        mySpecialWindow = window.open(
            url,
            "mySpecialWindow",
            "width=300, height=250"
        );
    }

    //Use existing popup window/tab
    else mySpecialWindow.location.href = url;

    return false;
}

//html
<a href="#" onclick="openInSameWindow('http://someurl.com')">first link</a>
<a href="#" onclick="openInSameWindow('http://someotherurl.com')">second link</a>

【讨论】:

  • 谢谢,这个 javascript 正是我想要的。我仍然不明白为什么网络浏览器不使用简单的命名目标来实现,但是......哦,好吧。
  • @DavidWoolley 然后请将此标记为问题的答案,以便人们知道它可以满足您的要求。
【解决方案2】:

属性“target”允许将文档加载到页面上的特定框架/iframe。在这些“标签日”中,它远离窗口,而是关于视图——[子]文档的容器。

【讨论】:

    【解决方案3】:

    https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a

    此属性指定显示链接资源的位置。在 HTML4 中,这是框架的名称或关键字。在 HTML5 中,它是浏览上下文(例如,选项卡、窗口或内联框架)的名称或关键字。以下关键字具有特殊含义:

    • _self:将响应加载到与当前框架相同的 HTML4 框架(或 HTML5 浏览上下文)中。如果未指定属性,则此值为默认值。
    • _blank:将响应加载到新的未命名 HTML4 窗口或 HTML5 浏览上下文中。
    • _parent:将响应加载到当前框架的 HTML4 框架集父级或当前框架的 HTML5 父级浏览上下文中。如果没有父级,则此选项的行为方式与 _self 相同。
    • _top:在 HTML4 中:将响应加载到完整的原始窗口中,取消所有其他帧。在 HTML5 中:将响应加载到顶级浏览上下文(即,作为当前浏览上下文的祖先且没有父浏览上下文的浏览上下文)。如果没有父级,则此选项的行为方式与 _self 相同。

    【讨论】:

    • 当我看到“选项卡、窗口或 iframe”时,我倾向于认为您实际上可以为某个选项卡提供特定的名称或上下文,这正是 OP 所说的不可能。我必须承认我已经很久没有尝试过这个了......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 2012-12-13
    • 2011-08-02
    相关资源
    最近更新 更多