Browse Source

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

pull/2/head
gorhill 7 years ago
parent
commit
a90e5cc7b4
No known key found for this signature in database GPG Key ID: 25E1490B761470C2
  1. 22
      src/js/contentscript.js

22
src/js/contentscript.js

@ -502,10 +502,27 @@ var nodeListsAddedHandler = function(nodeLists) {
var noscripts = document.querySelectorAll('noscript'); var noscripts = document.querySelectorAll('noscript');
if ( noscripts.length === 0 ) { return; } 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) { var renderNoscriptTags = function(response) {
if ( response !== true ) { return; } if ( response !== true ) { return; }
var parser = new DOMParser(); var parser = new DOMParser();
var doc, parent, span, meta;
var doc, parent, span;
for ( var noscript of noscripts ) { for ( var noscript of noscripts ) {
parent = noscript.parentNode; parent = noscript.parentNode;
if ( parent === null ) { continue; } if ( parent === null ) { continue; }
@ -515,6 +532,9 @@ var nodeListsAddedHandler = function(nodeLists) {
); );
span = document.adoptNode(doc.querySelector('span')); span = document.adoptNode(doc.querySelector('span'));
span.style.setProperty('display', 'inline', 'important'); span.style.setProperty('display', 'inline', 'important');
if ( redirectTimer === undefined ) {
autoRefresh(span);
}
parent.replaceChild(span, noscript); parent.replaceChild(span, noscript);
} }
}; };

Loading…
Cancel
Save