diff --git a/pywb/rewrite/regex_rewriters.py b/pywb/rewrite/regex_rewriters.py index c9694267..cfc00cbe 100644 --- a/pywb/rewrite/regex_rewriters.py +++ b/pywb/rewrite/regex_rewriters.py @@ -136,11 +136,16 @@ class JSLocationRewriterMixin(object): (r'(?<=document\.)cookie', RegexRewriter.add_prefix(prefix), 0), #todo: move to mixin? - (r'(?:[\s=(){]|^)(top)\s*(?:[!}()]|==|$)', + (r'(?<=[\s=(){])(parent|top)\s*(?:[!}()]|==|$)', RegexRewriter.add_prefix(prefix), 1), - (r'(?<=window\.)top', - RegexRewriter.add_prefix(prefix), 0), + (r'^(parent|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), diff --git a/pywb/rewrite/test/test_regex_rewriters.py b/pywb/rewrite/test/test_regex_rewriters.py index fc5784c0..301cfe34 100644 --- a/pywb/rewrite/test/test_regex_rewriters.py +++ b/pywb/rewrite/test/test_regex_rewriters.py @@ -49,6 +49,9 @@ r""" >>> _test_js('window.top != window') 'window.WB_wombat_top != window' +>>> _test_js('if(parent!=top)') +'if(WB_wombat_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 16336567..a185d9f9 100644 --- a/pywb/static/wombat.js +++ b/pywb/static/wombat.js @@ -940,12 +940,20 @@ _WBWombat = (function() { window.WB_wombat_top = find_next_top(window.self); + if (window.parent == window.top) { + window.WB_wombat_parent = window; + } else { + window.WB_wombat_parent = window.parent; + } + } else { window.top.WB_wombat_location = new WombatLocation(window.top.location); window.WB_wombat_top = window.top; + window.WB_wombat_parent = window.parent; } } else { window.WB_wombat_top = window.top; + window.WB_wombat_parent = window.parent; } //if (window.opener) {