【发布时间】:2014-07-11 00:46:18
【问题描述】:
给定一个文件的 URI,我想在新标签页(不是新窗口)中打开它。
It looks like 不可能使用$window.open(uri, '_blank')。
所以,我尝试了以下技巧:
var link = angular.element('<a href="uri-here" target="_blank"></a>');
angular.element(document.body).append(link);
link[0].click();
link.remove();
和it works。
但是,如果我将完全相同的代码放入 promise 回调中,它就不再起作用(而是在新窗口中打开文件)。
知道这里发生了什么吗?
【问题讨论】:
-
无法做到。新页面是在窗口中打开还是在新标签中打开是用户偏好,并且无法更改。
-
您的演示游乐场似乎按预期工作。我在 IE 11 上。
-
@pixelbits 有趣。它似乎也适用于 Firefox 30.0。我想知道为什么它在 Chrome 中不起作用(在我的例子中是 35.0)。
-
正如其他人指出的那样,您不能覆盖用户对浏览器行为的选择(甚至是默认行为)。无论如何,我会用更干净(和可读)
$window.open('http://martinfowler.com/ieeeSoftware/whenType.pdf')重写链接的“肮脏技巧” -
简单的答案是安全说你不能。我认为维护选项卡的最佳方法是将文件选择逻辑简单地移动到为新窗口提供服务的内容中并放弃 ajax 调用,无论如何这是一个毫无意义的步骤,不是吗。
标签: javascript angularjs