javascript window.open 无限加载
javascript window.open infinite loading
我有一个 JQuery ajax 请求可以 return 错误状态和消息。
为了处理它们,我使用了这段代码:
$.ajax("url", {
options: options
}).done(function(text, statusText, data) {
//Manage data
}).fail(function(data) {
//Manage fail
});
在我想要的失败句柄中,在 500: internal server error
的情况下,打开一个带有响应文本的新选项卡(用于调试目的)
我是这样做的:
if (data.status === 500) {
var w = window.open("App error", "blank");
w.document.write(data.responseText);
}
而且有效!
除了一点:我的浏览器加载了页面,显示了内容(因为它是静态内容,所有这些都不是真正的问题),但是 选项卡被标记为正在加载...加载中...加载中...
我使用的是 Firefox 63.0(64 位)。
有谁知道这是从哪里来的?这不是很烦人,这只是我不理解的(有趣?)行为。
它与 w.document.write
行有关。如果关闭文档,加载程序将完成。将代码更改为:
if (data.status === 500) {
var w = window.open("App error", "blank");
w.document.write(data.responseText);
w.document.close();
}
来源: Open about:blank window in firefox
问题是您打开的选项卡没有 url,大多数浏览器都希望有 url,这就是我为了摆脱它所做的事情:
const newWindow = window.open('#');
if (newWindow) {
newWindow.addEventListener('load', () => {
newWindow.document.open();
newWindow.document.write(request.responseText);
newWindow.document.close();
newWindow.stop();
}, true);
您可以将 #
替换为任何不存在的 url 路径,重要的是一旦它被加载,您将能够覆盖内容。
这不是最好的解决方案,但至少可以解决问题
我有一个 JQuery ajax 请求可以 return 错误状态和消息。
为了处理它们,我使用了这段代码:
$.ajax("url", {
options: options
}).done(function(text, statusText, data) {
//Manage data
}).fail(function(data) {
//Manage fail
});
在我想要的失败句柄中,在 500: internal server error
的情况下,打开一个带有响应文本的新选项卡(用于调试目的)
我是这样做的:
if (data.status === 500) {
var w = window.open("App error", "blank");
w.document.write(data.responseText);
}
而且有效!
除了一点:我的浏览器加载了页面,显示了内容(因为它是静态内容,所有这些都不是真正的问题),但是 选项卡被标记为正在加载...加载中...加载中...
我使用的是 Firefox 63.0(64 位)。
有谁知道这是从哪里来的?这不是很烦人,这只是我不理解的(有趣?)行为。
它与 w.document.write
行有关。如果关闭文档,加载程序将完成。将代码更改为:
if (data.status === 500) {
var w = window.open("App error", "blank");
w.document.write(data.responseText);
w.document.close();
}
来源: Open about:blank window in firefox
问题是您打开的选项卡没有 url,大多数浏览器都希望有 url,这就是我为了摆脱它所做的事情:
const newWindow = window.open('#');
if (newWindow) {
newWindow.addEventListener('load', () => {
newWindow.document.open();
newWindow.document.write(request.responseText);
newWindow.document.close();
newWindow.stop();
}, true);
您可以将 #
替换为任何不存在的 url 路径,重要的是一旦它被加载,您将能够覆盖内容。
这不是最好的解决方案,但至少可以解决问题