@@ -137,6 +137,7 @@ var _WBWombat = function($wbwindow, wbinfo) {
137
137
var STYLE_REGEX = / ( u r l \s * \( \s * [ \\ " ' ] * ) ( [ ^ ) ' " ] + ) ( [ \\ " ' ] * \s * \) ) / gi;
138
138
var IMPORT_REGEX = / ( @ i m p o r t \s + [ \\ " ' ] * ) ( [ ^ ) ' " ; ] + ) ( [ \\ " ' ] * \s * ; ? ) / gi;
139
139
var SRCSET_REGEX = / \s * ( \S * \s + [ \d \. ] + [ w x ] ) , | (?: \s * , (?: \s + | (? = h t t p s ? : ) ) ) / ;
140
+ var FullHTMLRegex = / ^ \s * < (?: h t m l | h e a d | b o d y | ! d o c t y p e h t m l ) / i;
140
141
141
142
function rwModForElement ( elem , attrName ) {
142
143
// this function was created to help add in retrial of element attribute rewrite modifiers
@@ -1767,12 +1768,19 @@ var _WBWombat = function($wbwindow, wbinfo) {
1767
1768
return ;
1768
1769
}
1769
1770
1770
- var changed ;
1771
+ var changed = false ;
1771
1772
// we use a switch now cause perf and complexity
1772
1773
switch ( elem . tagName ) {
1774
+ case 'META' :
1775
+ var maybeCSP = wb_getAttribute . call ( elem , 'http-equiv' ) ;
1776
+ if ( maybeCSP && maybeCSP . toLowerCase ( ) === 'content-security-policy' ) {
1777
+ wb_setAttribute . call ( elem , 'http-equiv' , '_' + maybeCSP ) ;
1778
+ changed = true ;
1779
+ }
1780
+ break ;
1773
1781
case 'STYLE' :
1774
1782
var new_content = rewrite_style ( elem . textContent ) ;
1775
- if ( elem . textContent !== new_content ) {
1783
+ if ( elem . textContent != new_content ) {
1776
1784
elem . textContent = new_content ;
1777
1785
changed = true ;
1778
1786
if ( wbUseAFWorker && elem . sheet != null ) {
@@ -1799,10 +1807,12 @@ var _WBWombat = function($wbwindow, wbinfo) {
1799
1807
break ;
1800
1808
case 'FORM' :
1801
1809
changed = rewrite_attr ( elem , "action" , true ) ;
1810
+ changed = rewrite_attr ( elem , 'style' ) || changed ;
1802
1811
break ;
1803
1812
case 'IFRAME' :
1804
1813
case 'FRAME' :
1805
1814
changed = rewrite_frame_src ( elem , "src" ) ;
1815
+ changed = rewrite_attr ( elem , 'style' ) || changed ;
1806
1816
break ;
1807
1817
case 'SCRIPT' :
1808
1818
changed = rewrite_script ( elem ) ;
@@ -1813,6 +1823,7 @@ var _WBWombat = function($wbwindow, wbinfo) {
1813
1823
default :
1814
1824
if ( elem instanceof SVGElement && elem . hasAttribute ( 'filter' ) ) {
1815
1825
changed = rewrite_attr ( elem , 'filter' ) ;
1826
+ changed = rewrite_attr ( elem , 'style' ) || changed ;
1816
1827
} else {
1817
1828
changed = rewrite_attr ( elem , 'src' ) ;
1818
1829
changed = rewrite_attr ( elem , 'srcset' ) || changed ;
@@ -1839,7 +1850,7 @@ var _WBWombat = function($wbwindow, wbinfo) {
1839
1850
1840
1851
var write_buff = "" ;
1841
1852
1842
- //============================================
1853
+ //===========================================
1843
1854
function rewrite_html ( string , check_end_tag ) {
1844
1855
if ( ! string ) {
1845
1856
return string ;
@@ -1859,7 +1870,7 @@ var _WBWombat = function($wbwindow, wbinfo) {
1859
1870
string = string . replace ( / ( ( i d | c l a s s ) = " .* ) W B _ w o m b a t _ ( [ ^ " ] + ) / , '$1$3' ) ;
1860
1871
}
1861
1872
1862
- if ( ! $wbwindow . HTMLTemplateElement || starts_with ( string , [ "<html" , "<head" , "<body" ] ) ) {
1873
+ if ( ! $wbwindow . HTMLTemplateElement || FullHTMLRegex . test ( string ) ) {
1863
1874
return rewrite_html_full ( string , check_end_tag ) ;
1864
1875
}
1865
1876
0 commit comments