为啥“_Blank”不会导致 URL 在新的浏览器窗口中打开?

Posted

技术标签:

【中文标题】为啥“_Blank”不会导致 URL 在新的浏览器窗口中打开?【英文标题】:Why does "_Blank" not cause the URL to open in a new Browser Window?为什么“_Blank”不会导致 URL 在新的浏览器窗口中打开? 【发布时间】:2021-01-21 22:13:07 【问题描述】:

我有这段代码,使用 Target="_blank" 应该在新标签中打开“NavigateURL”:

<div class="row">
    <asp:HyperLink ID="HyperLink3" runat="server" NavigateUrl="https://www.amazon.com/Rebel-Cause-Twains- 
        Hidden-Memoirs/dp/107331071X/garrphotgall-20">
        <asp:image runat="server" ImageUrl="Images\RWAC_BothCovers.jpg" 
            style="width:144px;height:120px;margin-left: 60px;" /><br />
        <asp:Label runat="server" Target="_blank"></asp:Label>
    </asp:HyperLink>
</div>

...但事实并非如此;这是因为它是我网站的“测试”版本,从 Visual Studio (IIS Express (Google Chrome)) 运行?或者它在“现实世界”中也不能正常工作?如果是这样,我该怎么做才能解决它?

我不知道为什么标签需要在那里(我从其他地方复制了这个想法),但即使我在 asp 的主要部分中添加了 Target="_blank" :超链接(在 asp:Label 之外)——无论我是否将标签完全取出——它的工作原理都是一样的(它不能正常工作,或者像我期望的那样)。

【问题讨论】:

这能回答你的问题吗? How do I use Target=_blank on a response.redirect? 排序;但我不想使用 javascript。我仍然无法让 Target=_blank 工作 引用上面评论中的问题:«如果我理解正确,您希望能够在新窗口中打开重定向的 URL,但可能会在同一窗口中保留原始目标。不幸的是,您不能这样做,因为重定向是由服务器而不是浏览器提供的。您可能会重定向到一个页面,该页面包含一些基于 URL 查询字符串参数打开一个新窗口的脚本。但是如果你不小心的话,这会让你自己暴露在 XSS 面前。 » 为什么标签上有目标而不是链接? 我在下面回答时没有看到您的评论。 【参考方案1】:

问题应该很明显:Target="_blank" 位于错误的元素上。事实上,我根本不需要 Label。

将指令放在正确的位置(在 asp:HyperLink 上):

<div class="row" style="justify-content:center;padding-top: 8px;padding-bottom: 4px;">
    <asp:HyperLink ID="HyperLink10" runat="server" Target="_blank" 
            NavigateUrl="https://www.amazon.com/Adventures-Screen-Trade-William- 
            Goldman-ebook/dp/B007Z7UDF8/garrphotgall-20">
        <asp:image runat="server" 
            ImageUrl="Images\Goldman_AdventuresInTheScreenTrade.jpg" 
            class="img-fluid" style="width:144px;height:144px;border: 2px solid blue;" 
            />
    </asp:HyperLink>
</div>

...使其正常工作 - 单击图像会打开一个新选项卡。

【讨论】:

以上是关于为啥“_Blank”不会导致 URL 在新的浏览器窗口中打开?的主要内容,如果未能解决你的问题,请参考以下文章

在新选项卡(而不是新窗口)中打开 URL

markdown语法

浏览器拦截js打开新窗口

浏览器拦截js打开新窗口

href标签中target的几个属性值

js window.open(url)为啥会自动下载文件,而不是打开文件?