LINUX.ORG.RU

Прибить meta refresh

 


0

1

Вот пример:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<meta http-equiv="refresh" content="0; url=http://example.com/">
</head>
<body>

</body>
</html>

Если сделать remove() на «//meta[@http-equiv='refresh']», переадресация все равно происходит. «@run-at document-start» не помогает.

Up

Копипастой и методом тыка подобрал решение. Иногда глючит - выдает пустую страницу. И не очень понятно, почему это вообще работает.

// ==UserScript==
// @name test
// @match *
// ==/UserScript==

"use strict";

(function (window, XMLHttpRequest) {
	if (window.self !== window.top) {
		return;
	}
	window.stop();
}(this, this.XMLHttpRequest));

а так шо не работает?

var p = r.responseText, d = window.document;
d.open();
d.write(p.replace(/<meta http-equiv="refresh".*\/?>/gi, ""));
d.close();

full


(function (window, XMLHttpRequest) {
    "use strict";

    if (window.self !== window.top) {
        return;
    }

    window.stop();

    var uri = window.location.href;

    var r = new XMLHttpRequest();
    r.open("GET", uri, false);
    r.send(null);

    if (!(r.readyState === 4 && r.status === 200)) {
        return;
    }

    var p = r.responseText, d = window.document;
    d.open();
    d.write(p.replace(/<meta http-equiv="refresh".*\/?>/gi, ""));
    d.close();
}(this, this.XMLHttpRequest));

vtVitus ★★★★★ ()
Последнее исправление: vtVitus (всего исправлений: 1)
Ответ на: комментарий от vtVitus

Смысла нет. Внутри функции, после window.stop(), document уже не меняется. То есть, можно сделать d.write(«anything»), но браузер все равно покажет оригинальную страницу с сервера. Если что, у меня Firefox 68 esr.

Вопрос, что делает (function (window, XMLHttpRequest) { }(this, this.XMLHttpRequest));

slavamn ()