HTML 与目标的链接

HTML links with target

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

"target" 属性在 HTML link 上的一种可能用途是指定命名的 window,例如:

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

可能命名目标而不是仅使用“_blank”的原因是您希望能够为其他 link 引用相同的 window。例如,假设您有一个您希望始终保持在视图中的主页,其中包含 link 到多个帮助页面,并且您希望所有这些帮助页面都在特定的辅助页面中打开 window .所以点击第一个帮助 link 打开第二个帮助 window,点击第二个帮助 link 用不同的帮助页面替换第二个 window 的内容,点击第三个帮助 link 再次替换那个次级 window 的内容,等等

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

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

有什么方法可以让 link 实际使用现有的 window 并以相同的名称打开,而不是打开另一个 window?

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

This attribute specifies where to display the linked resource. In HTML4, this is the name of, or a keyword for, a frame. In HTML5, it is a name of, or keyword for, a browsing context (for example, tab, window, or inline frame). The following keywords have special meanings:

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

属性 "target" 允许将文档加载到页面上的特定 frame/iframe 中。它与这些 "tab days" 中的 windows 相去甚远,而是关于视图 - [子] 文档的容器。

你试过用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>