[FIX] web_enterprise: kanban_state_selection ie
On IE (from 9.0 up to at least IE EDGE 14) we have this behavior
for the method serializeToString of XMLSerializer:
> (new XMLSerializer()).serializeToString($('<b>"</b>')[0])
'<b xmlns="http://www.w3.org/1999/xhtml">"</b>'
> (new XMLSerializer()).serializeToString($('<b>"</b>')[0].firstChild)
'"'
Whilst browser such as chromium or firefox have:
> (new XMLSerializer()).serializeToString($('<b>"</b>')[0])
'<b xmlns="http://www.w3.org/1999/xhtml">"</b>'
> (new XMLSerializer()).serializeToString($('<b>"</b>')[0].firstChild)
'"'
Hence for IE9 and over, if in a `<t t-extend/>` a `t-jquery`
sub-directive (without `t-operation`) is available, we can have
broken javascript if a " is transformed into an " at a unfortunate
location.
This commit favour node.data over XMLSerializer serializeToString to
avoid the possibility of this issue when a text node is processed.
opw-727283
This commit is contained in:
@@ -120,12 +120,15 @@ var QWeb2 = {
|
|||||||
}
|
}
|
||||||
return r.join('');
|
return r.join('');
|
||||||
} else {
|
} else {
|
||||||
|
// avoid XMLSerializer with text node for IE
|
||||||
|
if (node.nodeType == 3) {
|
||||||
|
return node.data;
|
||||||
|
}
|
||||||
if (typeof XMLSerializer !== 'undefined') {
|
if (typeof XMLSerializer !== 'undefined') {
|
||||||
return (new XMLSerializer()).serializeToString(node);
|
return (new XMLSerializer()).serializeToString(node);
|
||||||
} else {
|
} else {
|
||||||
switch(node.nodeType) {
|
switch(node.nodeType) {
|
||||||
case 1: return node.outerHTML;
|
case 1: return node.outerHTML;
|
||||||
case 3: return node.data;
|
|
||||||
case 4: return '<![CDATA[' + node.data + ']]>';
|
case 4: return '<![CDATA[' + node.data + ']]>';
|
||||||
case 8: return '<!-- ' + node.data + '-->';
|
case 8: return '<!-- ' + node.data + '-->';
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user