diff --git a/pywb/rewrite/html_rewriter.py b/pywb/rewrite/html_rewriter.py index 246c037b..c4ec854c 100644 --- a/pywb/rewrite/html_rewriter.py +++ b/pywb/rewrite/html_rewriter.py @@ -168,10 +168,7 @@ class HTMLRewriterMixin(object): # attr rewriting handler = self.rewrite_tags.get(tag) if not handler: - handler = self.rewrite_tags.get('') - - if not handler: - return False + handler = {} self.out.write('<' + tag) diff --git a/pywb/rewrite/regex_rewriters.py b/pywb/rewrite/regex_rewriters.py index cfc00cbe..0b5bd47a 100644 --- a/pywb/rewrite/regex_rewriters.py +++ b/pywb/rewrite/regex_rewriters.py @@ -136,22 +136,14 @@ class JSLocationRewriterMixin(object): (r'(?<=document\.)cookie', RegexRewriter.add_prefix(prefix), 0), #todo: move to mixin? - (r'(?<=[\s=(){])(parent|top)\s*(?:[!}()]|==|$)', - RegexRewriter.add_prefix(prefix), 1), + (r'(?<=[\s=(){])(top)\s*(?:[!}()]|==|$)', + RegexRewriter.add_prefix(prefix), 1), - (r'^(parent|top)\s*(?:[!}()]|==|$)', - RegexRewriter.add_prefix(prefix), 1), + (r'^(top)\s*(?:[!}()]|==|$)', + RegexRewriter.add_prefix(prefix), 1), - (r'(?<=window\.)(parent|top)', - RegexRewriter.add_prefix(prefix), 1), - - - - # (r'\b(top)\b[!=\W]+(?:self|window)', - # RegexRewriter.add_prefix(prefix), 1), - - #(r'\b(?:self|window)\b[!=\W]+\b(top)\b', - #RegexRewriter.add_prefix(prefix), 1), + (r'(?<=window\.)(top)', + RegexRewriter.add_prefix(prefix), 1), ] super(JSLocationRewriterMixin, self).__init__(rewriter, rules) diff --git a/pywb/rewrite/test/test_html_rewriter.py b/pywb/rewrite/test/test_html_rewriter.py index 7e17e28f..a59a7b13 100644 --- a/pywb/rewrite/test/test_html_rewriter.py +++ b/pywb/rewrite/test/test_html_rewriter.py @@ -8,7 +8,7 @@ ur""" #================================================================= >>> parse('Text') -Text +Text >>> parse('
')
@@ -45,7 +45,7 @@ ur""" # Don't rewrite anchors >>> parse('Text') -Text +Text # Ensure attr values are not unescaped >>> parse('X') @@ -101,6 +101,9 @@ ur""" >>> parse('
')
+>>> parse('') + + # Style >>> parse('') diff --git a/pywb/rewrite/test/test_regex_rewriters.py b/pywb/rewrite/test/test_regex_rewriters.py index 301cfe34..e598390c 100644 --- a/pywb/rewrite/test/test_regex_rewriters.py +++ b/pywb/rewrite/test/test_regex_rewriters.py @@ -50,7 +50,7 @@ r""" 'window.WB_wombat_top != window' >>> _test_js('if(parent!=top)') -'if(WB_wombat_parent!=WB_wombat_top)' +'if(parent!=WB_wombat_top)' >>> _test_js('top != window') 'WB_wombat_top != window' diff --git a/pywb/static/wombat.js b/pywb/static/wombat.js index e620f65c..684fcc67 100644 --- a/pywb/static/wombat.js +++ b/pywb/static/wombat.js @@ -295,7 +295,10 @@ _WBWombat = (function() { return this._orig_loc.replace(rewrite_url(url)); } this.assign = function(url) { - return this._orig_loc.assign(rewrite_url(url)); + var new_url = rewrite_url(url); + if (new_url != url) { + return this._orig_loc.assign(new_url); + } } this.reload = loc.reload; @@ -523,13 +526,16 @@ _WBWombat = (function() { Element.prototype.setAttribute = function(name, value) { if (name) { var lowername = name.toLowerCase(); - if (equals_any(lowername, REWRITE_ATTRS)) { + if (equals_any(lowername, REWRITE_ATTRS) && typeof(value) == "string") { if (!this._no_rewrite) { + var old_value = value; value = rewrite_url(value); + if (value != old_value) { + this._no_rewrite = true; + } } } } - orig_setAttribute.call(this, name, value); }; }