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:
parent
5c340e85e8
commit
a90e5cc7b4
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue