AngularJS:如何在新标签中打开文件?

Mis*_*hko 13 javascript angularjs

LIVE DEMO

给定文件的URI,我想在新的选项卡(而不是新窗口)中打开它.

看起来 不可能使用$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();
Run Code Online (Sandbox Code Playgroud)

它的作品.

但是,如果我在promise回调中放置完全相同的代码,它就不再起作用了(它在新窗口中打开文件).

知道这里发生了什么吗?

PLAYGROUND HERE

Dav*_*esh 11

从您的代码/内容中,您无法强制浏览器打开新选项卡(而不是新窗口,反之亦然).由浏览器设置决定以某种方式强制它.

任何其他东西都是安全风险.


Chi*_*Row 0

工作版本

$http.get('https://api.github.com/users/angular').then(openInNewTab());
Run Code Online (Sandbox Code Playgroud)

编辑 - - - - - - - -

不知道为什么,但从回调函数调用的 click() 方法的行为与直接调用它不同。

您可以在此处查看设置间隔的示例。

这就是为什么我直接调用该函数而不是通过回调。

通过计时器回调查看它