1
0
Fork 0
mirror of https://github.com/gorhill/uMatrix.git synced 2024-06-02 02:14:52 +12:00

finalize fix to #319 -- redirect if meta/refresh found in noscript tags

This commit is contained in:
gorhill 2017-12-05 16:09:30 -05:00
parent 5c340e85e8
commit a90e5cc7b4
No known key found for this signature in database
GPG key ID: 25E1490B761470C2

View file

@ -502,10 +502,27 @@ var nodeListsAddedHandler = function(nodeLists) {
var noscripts = document.querySelectorAll('noscript');
if ( noscripts.length === 0 ) { return; }
var redirectTimer,
reMetaContent = /^\s*(\d+)\s*;\s*url=(['"]?)([^'"]+)\2/;
var autoRefresh = function(root) {
var meta = root.querySelector('meta[http-equiv="refresh"][content]');
if ( meta === null ) { return; }
var match = reMetaContent.exec(meta.getAttribute('content'));
if ( match === null || match[3].trim() === '' ) { return; }
redirectTimer = setTimeout(
function() {
location.assign(match[3]);
},
parseInt(match[1], 10) * 1000 + 1
);
meta.parentNode.removeChild(meta);
};
var renderNoscriptTags = function(response) {
if ( response !== true ) { return; }
var parser = new DOMParser();
var doc, parent, span, meta;
var doc, parent, span;
for ( var noscript of noscripts ) {
parent = noscript.parentNode;
if ( parent === null ) { continue; }
@ -515,6 +532,9 @@ var nodeListsAddedHandler = function(nodeLists) {
);
span = document.adoptNode(doc.querySelector('span'));
span.style.setProperty('display', 'inline', 'important');
if ( redirectTimer === undefined ) {
autoRefresh(span);
}
parent.replaceChild(span, noscript);
}
};