mirror of
https://github.com/webrecorder/pywb.git
synced 2025-03-24 06:59:52 +01:00
rewrite: add support for srcset rewriting for img tag
This commit is contained in:
parent
ced94d289d
commit
7aac3aa2dd
@ -33,7 +33,8 @@ class HTMLRewriterMixin(object):
|
|||||||
'embed': {'src': 'oe_'},
|
'embed': {'src': 'oe_'},
|
||||||
'head': {'': defmod}, # for head rewriting
|
'head': {'': defmod}, # for head rewriting
|
||||||
'iframe': {'src': 'if_'},
|
'iframe': {'src': 'if_'},
|
||||||
'img': {'src': 'im_'},
|
'img': {'src': 'im_',
|
||||||
|
'srcset': 'im_'},
|
||||||
'ins': {'cite': defmod},
|
'ins': {'cite': defmod},
|
||||||
'input': {'src': 'im_'},
|
'input': {'src': 'im_'},
|
||||||
'form': {'action': defmod},
|
'form': {'action': defmod},
|
||||||
@ -117,6 +118,11 @@ class HTMLRewriterMixin(object):
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def _rewrite_srcset(self, value, mod=''):
|
||||||
|
values = value.split(',')
|
||||||
|
values = map(lambda x: self._rewrite_url(x.strip()), values)
|
||||||
|
return ', '.join(values)
|
||||||
|
|
||||||
def _rewrite_css(self, css_content):
|
def _rewrite_css(self, css_content):
|
||||||
if css_content:
|
if css_content:
|
||||||
return self.css_rewriter.rewrite(css_content)
|
return self.css_rewriter.rewrite(css_content)
|
||||||
@ -169,6 +175,11 @@ class HTMLRewriterMixin(object):
|
|||||||
elif attr_name == 'style':
|
elif attr_name == 'style':
|
||||||
attr_value = self._rewrite_css(attr_value)
|
attr_value = self._rewrite_css(attr_value)
|
||||||
|
|
||||||
|
# special case: srcset list
|
||||||
|
elif attr_name == 'srcset':
|
||||||
|
rw_mod = handler.get(attr_name, '')
|
||||||
|
attr_value = self._rewrite_srcset(attr_value, rw_mod)
|
||||||
|
|
||||||
# special case: disable crossorigin attr
|
# special case: disable crossorigin attr
|
||||||
# as they may interfere with rewriting semantics
|
# as they may interfere with rewriting semantics
|
||||||
elif attr_name == 'crossorigin':
|
elif attr_name == 'crossorigin':
|
||||||
|
@ -60,6 +60,10 @@ ur"""
|
|||||||
>>> parse('<div data-url="http://example.com/a/b/c.html" data-some-other-value="http://example.com/img.gif">')
|
>>> parse('<div data-url="http://example.com/a/b/c.html" data-some-other-value="http://example.com/img.gif">')
|
||||||
<div data-url="/web/20131226101010oe_/http://example.com/a/b/c.html" data-some-other-value="/web/20131226101010oe_/http://example.com/img.gif">
|
<div data-url="/web/20131226101010oe_/http://example.com/a/b/c.html" data-some-other-value="/web/20131226101010oe_/http://example.com/img.gif">
|
||||||
|
|
||||||
|
# srcset attrib
|
||||||
|
>>> parse('<img srcset="//example.com/1x 1x, //example.com/foo 2x, https://example.com/bar 4x">')
|
||||||
|
<img srcset="/web/20131226101010/http://example.com/1x 1x, /web/20131226101010/http://example.com/foo 2x, /web/20131226101010/https://example.com/bar 4x">
|
||||||
|
|
||||||
# Script tag
|
# Script tag
|
||||||
>>> parse('<script>window.location = "http://example.com/a/b/c.html"</script>')
|
>>> parse('<script>window.location = "http://example.com/a/b/c.html"</script>')
|
||||||
<script>window.WB_wombat_location = "/web/20131226101010/http://example.com/a/b/c.html"</script>
|
<script>window.WB_wombat_location = "/web/20131226101010/http://example.com/a/b/c.html"</script>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user