我正在开发纯粹在JavaScript中的OAuth身份验证流程,我想在弹出窗口中向用户显示"授予访问权限"窗口,但它会被阻止.
如何防止由不同浏览器的弹出窗口阻止程序阻止弹出窗口window.open或被window.showModalDialog其阻止?
我使用以下jQuery JSONP请求通过URL检查资源的状态.当资源不可用或服务器关闭时,我的ajaxFail()功能会更新显示.
function fetchServerStatus(service, host)
{
var port = serverStatus[service].port;
$.ajax({
url: "http://" + host + ":" + port + "/admin/server/status",
dataType: "jsonp",
timeout: 1000,
error: ajaxFail,
fail: ajaxFail,
success: ajaxDone,
done: ajaxDone,
complete: ajaxAlways,
always: ajaxAlways
});
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,尽管声明了处理程序,fail并且error没有将任何内容记录到控制台,jQuery总是在控制台中记录失败的请求.如果资源长时间不可用,则会构建一个巨大的控制台日志,最终导致浏览器进程崩溃(在我的情况下为Chrome).
有没有办法阻止它这样做?
我有一些代码在哪里进行提取调用.这利用了现代chrome/firefox中内置的window.fetch api.
代码有时会遇到401:未经授权的响应.这是正常的,我希望它被忽略,我可以用代码的流程做.但是,当我尝试运行它时,Chrome确实会显示一个难看的console.error消息.
我如何编程地防止此控制台错误显示在所有计算机上的开发控制台中(即,没有chrome dev过滤器或tampermonkey类型插件).
这是一个可以解决的样本:
fetch("http://httpstat.us/401", {requiredStatus: 'ok'})
.then(function() {
console.log("pass!");
}).catch(function() {
console.log("fail!");
});Run Code Online (Sandbox Code Playgroud)
我认为这个问题非常简单,但我还没有在官方的Socket.io文档中找到答案.
我有我的Socket.io服务器和客户端成功通信,当我关闭服务器时,客户端将尝试重新连接服务器失败.这在Chrome开发人员的控制台中显示:

有没有办法在客户端Javscript中检测此事件并以某种方式对其做出反应?我想我会在页面上显示一个对话框,例如"抱歉,服务器负载很重"等.
使用 JavaScript fetch API 时,浏览器控制台会记录 错误ERR_CONNECTION_REFUSED,但fetch 块会返回服务器离线时catch的消息。TypeError Failed to fetch
以下最小提取突出显示了两个错误消息:
fetch("https://localhost/get-something", {
method: "POST"
}).then(resp => {
console.log(resp)
}).catch(err => {
console.log("ERR:", err, err.name, err.message)
})
Run Code Online (Sandbox Code Playgroud)
运行fetch时,浏览器的控制台会出现两个错误:
POST https://localhost/get-something net::ERR_CONNECTION_REFUSED
Run Code Online (Sandbox Code Playgroud)
和
ERR: TypeError: Failed to fetch
// err.message will be "failed to fetch"
Run Code Online (Sandbox Code Playgroud)
来自 catch 块的通用failed to fetch消息会在服务器关闭以外的实例中返回。我对浏览器的控制台错误更感兴趣ERR_CONNECTION_REFUSED。
有没有办法捕获ERR_CONNECTION_REFUSED失败的提取调用中的值?
我的网络应用程序需要定期检查服务器是否已启动。这允许用户以任一顺序启动服务器和客户端。
为此,我只是WebSocket从setTimeout处理程序内部调用构造函数。
从使用的角度来看,这种策略效果很好,但对我开发人员来说很烦人,因为我在 Chrome 中看到很多控制台错误:
remote.html:194 WebSocket connection to 'ws://localhost:8082/' failed: Connection closed before receiving a handshake response
remote.html:194 WebSocket connection to 'ws://localhost:8082/' failed: Connection closed before receiving a handshake response
remote.html:194 WebSocket connection to 'ws://localhost:8082/' failed: Connection closed before receiving a handshake response
Run Code Online (Sandbox Code Playgroud)
这些并不是真正的错误,因为我的 Web 应用程序在服务器不可用的情况下完全没问题。它重复调用WebSocket构造函数(MDN)只是为了检查服务器是否已经启动。
有一个更好的方法吗?对于上下文,我的 Web 应用程序是在设备上运行的本机 C++ 应用程序的“远程控制”。
javascript ×6
fetch-api ×2
browser ×1
jquery ×1
modal-dialog ×1
node.js ×1
popup ×1
socket.io ×1
typeerror ×1
websocket ×1