可能重复:
window.open(url) different behavior - same code, different timing
我会让我的代码段解释我看到的问题。
function myFunction() {
window.open('http://www.yahoo.com'); // --> this opens a new tab on my browser
Ext.Ajax.request({
url: 'PHP function call',
success: function(response) {
window.open('http://www.yahoo.com'); // --> this opens a new window, not tab
}
});
}
这很奇怪。通过研究这个问题,我了解到目前无法强制打开浏览器选项卡而不是浏览器窗口。话虽如此,我仍然想知道是否有任何解决方法。我的应用程序的设计方式,每次我调用window.open()时都会打开一个选项卡,除了这一个案例,因此我的客户发现它非常烦人。任何见解将不胜感激。
除了贾斯汀的建议,我还尝试了以下内容:
function myFunction() {
var myWin = window;
myWin.open('http://www.yahoo.com'); // --> this opens a new tab on my browser
Ext.Ajax.request({
url: 'PHP function call',
success: function(response) {
myWin.open('http://www.yahoo.com'); // --> this opens a new window, not tab
}
});
}
答案 0 :(得分:1)
这是时机。如果您的请求需要更多,那么~3s浏览器会认为它是弹出窗口。几周前看看我的问题:window.open(url) different behavior - same code, different timing
答案 1 :(得分:0)
我怀疑它可能是一个范围问题。 AJAX调用在与脚本其余部分分开的“窗口”中运行的位置。
你有没有试过像:
function myFunction() {
Ext.Ajax.request({
url: 'PHP function call',
success: function(response) {
openWindows('http://www.yahoo.com');
}
});
}
function openWindows(url){
window.open(url);
}
答案 2 :(得分:0)
你有没有试过像:
function myFunction() {
window.open('http://www.yahoo.com'); // --> this opens a new tab on my browser
Ext.Ajax.request({
url: 'PHP function call',
success: function(response) {
this.apply(openWindow);
}
});
}
function openWindow()
{
window.open('http://www.yahoo.com');
}