removeattr - void(0) javascript href
Silence net:: ERR_CONNECTION_REFUSED (2)
La conexión a un servidor de socket web inexistente da como resultado errores en la consola, por lo general al ritmo de ... net::ERR_CONNECTION_REFUSED
.
¿Alguien tiene una idea para un hackaround para silenciar esta salida? XMLHttpRequest
no funcionará dado que produce la misma salida de error detallado si el servidor no es accesible.
El objetivo aquí es probar si el servidor está disponible, si está conectado a él, de lo contrario, utilice un respaldo, y para hacerlo sin enviar spam a la consola con salida de error.
No sé por qué quieres evitar este error de salida. Supongo que solo querrás deshacerte de ellos cuando estés depurando. Así que proporciono un trabajo por aquí puede ser útil para la depuración.
Demostración en vivo: http://blackmiaool.com/soa/43012334/boot.html
¿Cómo usarlo?
Abra la página de demostración, haga clic en el botón "iniciar", se abrirá una nueva pestaña. Haga clic en el botón "probar" en la nueva pestaña y verifique el resultado a continuación. Si desea obtener un resultado positivo, cambie la URL a wss://echo.websocket.org
.
¿Por qué?
Al utilizar el mensaje de correo , podemos hacer que las pestañas del navegador se comuniquen entre sí. Entonces podemos mover esos resultados de error a una pestaña que no nos concierne.
PD Puede actualizar la página de destino libremente sin perder la conexión entre ella y la página de inicio .
PPS También puede usar el evento de almacenamiento para lograr esto.
boot.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>boot page</title>
</head>
<body>
<button onclick="boot()">boot</button>
<p>BTW, you can boot the page without the button if you are willing to allow the "pop-up"</p>
<script>
var targetWindow;
function init() {
targetWindow
}
function boot() {
targetWindow = window.open("target.html");
}
boot();
window.addEventListener(''message'', function(e) {
var msg = e.data;
var {
action,
url,
origin,
} = msg;
if (action === "testUrl") {
let ws = new WebSocket(url);
ws.addEventListener("error", function() {
targetWindow.postMessage({
action: "urlResult",
url,
data: false,
}, origin);
ws.close();
});
ws.addEventListener("open", function() {
targetWindow.postMessage({
action: "urlResult",
url,
data: true,
}, origin);
ws.close();
});
}
});
</script>
</body>
</html>
target.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>target page</title>
</head>
<body>
<h4>input the url you want to test:</h4>
<textarea type="text" id="input" style="width:300px;height:100px;">
</textarea>
<br>
<div>try <span style="color:red">wss://echo.websocket.org</span> for success result(may be slow)</div>
<button onclick="test()">test</button>
<div id="output"></div>
<script>
var origin = location.origin;
var testUrl = origin.replace(/^https?/, "ws") + "/abcdef"; //not available of course
document.querySelector("#input").value = testUrl;
function output(val) {
document.querySelector("#output").textContent = val;
}
function test() {
if (window.opener) {
window.opener.postMessage({
action: "testUrl",
url: document.querySelector("#input").value,
origin,
}, origin);
} else {
alert("opener is not available");
}
}
window.addEventListener(''message'', function(e) {
var msg = e.data;
if (msg.action === "urlResult") {
output(`test ${msg.url} result: ${msg.data}`);
}
});
</script>
</body>
</html>
Chrome en sí está emitiendo estos mensajes, y no hay forma de bloquearlos. Esta es una función de cómo se construyó Chrome; cada vez que un objeto ResourceFetcher intenta recuperar un recurso, su respuesta se devuelve a su contexto, y si hay un error, el navegador lo imprime en la consola; consulte aquí .
La pregunta similar se puede encontrar aquí .
Si lo desea, puede usar un filtro de consola de Chrome ya que esta pregunta se analiza para bloquear estos errores en la consola, pero no hay forma de bloquear los mensajes de forma programática.