单击文件时如何防止空白选项卡出现在 Edge 中 link
How to prevent a blank tab from appearing in Edge when clicking on a file link
我有一个 html 页面,其中有多个 link 文件指向各种文件类型,例如 pdf、csv 和 zip。根据可用的浏览器插件,其中一些文件可以由浏览器内联打开,而其他文件将被下载。
我不希望在当前选项卡中打开这样的 link,所以每个都有属性 target="blank"
。
这在大多数浏览器中工作正常:
- 当用户单击 link 可以内联显示的文件时,该文件将显示在新选项卡中。
- 否则,将打开一个新选项卡,并在文件开始下载后立即立即关闭。用户停留在当前window.
然而,在 Microsoft Edge 中,第二种情况不起作用:新选项卡保持打开状态。这很烦人,因为用户现在正在查看一个无用的空选项卡。
有什么办法可以防止这种情况发生吗?
方法一:
我建议您清除 Microsoft Edge 的清除浏览数据选项,然后检查您是否遇到问题。为此,请执行以下步骤。
单击 Edge 右上角反馈图标旁边的更多操作图标。
Select 设置并点击选择要清除的内容。
选中浏览历史记录、Cookie 和保存的网站数据以及缓存数据和文件复选框,然后单击清除。
方法二:
如果您使用任何代理连接,请尝试禁用代理连接并检查。
按照以下步骤禁用代理:
单击 Internet Explorer 右上角的设置图标。
单击工具按钮,然后单击 Internet 选项。
单击“连接”选项卡,然后单击“LAN 设置”。
取消选中“LAN 的代理服务器”旁边的复选框。
单击“确定”保存设置并关闭 window。
现在通过打开 Edge 检查问题。
我认为您无法阻止 Edge 的这种行为。您可以做的是更改 HTML 标签。
在没有 target
属性的 <a>
元素中使用 download
属性。这样,浏览器将提示保存对话框,而不是打开新选项卡。
<a href="myfile" download>Download</a>
http://www.w3schools.com/tags/att_a_download.asp
在这种情况下,浏览器不会显示内联文件。
如果您仍然希望您的客户能够看到内联文件,您可以检测客户的浏览器;如果是 Edge 则使用 download
属性,如果不是则使用 target
属性。此外,您可以使用 navigator.mimetypes
之类的东西来检测哪些文件类型可以内联显示(请参阅 https://developer.mozilla.org/en-US/docs/Web/API/NavigatorPlugins/mimeTypes)。
这是我从另一个 post ()
中获取的检测函数
function isEDGE(){
return /Edge\/\d./i.test(navigator.userAgent)
}
让您的 <a>
标签没有 target
和 download
属性。使用检测功能并确定正确的属性。
像这样:
$(document).ready(function(){
if(isEDGE()) {
$('a').attr('download','download');
} else {
$('a').attr('target','_blank');
}
})
注:
我不确定边缘检测功能。
我有一个 html 页面,其中有多个 link 文件指向各种文件类型,例如 pdf、csv 和 zip。根据可用的浏览器插件,其中一些文件可以由浏览器内联打开,而其他文件将被下载。
我不希望在当前选项卡中打开这样的 link,所以每个都有属性 target="blank"
。
这在大多数浏览器中工作正常:
- 当用户单击 link 可以内联显示的文件时,该文件将显示在新选项卡中。
- 否则,将打开一个新选项卡,并在文件开始下载后立即立即关闭。用户停留在当前window.
然而,在 Microsoft Edge 中,第二种情况不起作用:新选项卡保持打开状态。这很烦人,因为用户现在正在查看一个无用的空选项卡。
有什么办法可以防止这种情况发生吗?
方法一: 我建议您清除 Microsoft Edge 的清除浏览数据选项,然后检查您是否遇到问题。为此,请执行以下步骤。 单击 Edge 右上角反馈图标旁边的更多操作图标。 Select 设置并点击选择要清除的内容。 选中浏览历史记录、Cookie 和保存的网站数据以及缓存数据和文件复选框,然后单击清除。
方法二: 如果您使用任何代理连接,请尝试禁用代理连接并检查。 按照以下步骤禁用代理: 单击 Internet Explorer 右上角的设置图标。 单击工具按钮,然后单击 Internet 选项。 单击“连接”选项卡,然后单击“LAN 设置”。 取消选中“LAN 的代理服务器”旁边的复选框。 单击“确定”保存设置并关闭 window。 现在通过打开 Edge 检查问题。
我认为您无法阻止 Edge 的这种行为。您可以做的是更改 HTML 标签。
在没有 target
属性的 <a>
元素中使用 download
属性。这样,浏览器将提示保存对话框,而不是打开新选项卡。
<a href="myfile" download>Download</a>
http://www.w3schools.com/tags/att_a_download.asp
在这种情况下,浏览器不会显示内联文件。
如果您仍然希望您的客户能够看到内联文件,您可以检测客户的浏览器;如果是 Edge 则使用 download
属性,如果不是则使用 target
属性。此外,您可以使用 navigator.mimetypes
之类的东西来检测哪些文件类型可以内联显示(请参阅 https://developer.mozilla.org/en-US/docs/Web/API/NavigatorPlugins/mimeTypes)。
这是我从另一个 post (
function isEDGE(){
return /Edge\/\d./i.test(navigator.userAgent)
}
让您的 <a>
标签没有 target
和 download
属性。使用检测功能并确定正确的属性。
像这样:
$(document).ready(function(){
if(isEDGE()) {
$('a').attr('download','download');
} else {
$('a').attr('target','_blank');
}
})
注: 我不确定边缘检测功能。