Bug 227978

Summary: Failed to get-node by using getElementById in webkitGTK while insert node by using inner HTML(Document-fragment Element).
Product: WebKit Reporter: sssdev <sssqa007>
Component: DOMAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Critical    
Priority: P2    
Version: WebKit Local Build   
Hardware: PC   
OS: Linux   
Attachments:
Description Flags
Sample HTML test-code none

Description sssdev 2021-07-14 20:55:45 PDT
Issue : DOM Node Insertion failure in webkitGTK while insert node by using innerHTML.

Google Chrome behaviour:

In Chrome successfully element displayed while get the by id('clip').
Output : Check Id[object SVGRectElement]*****.
But in webkit null instance returned.
Output : Check Idnull*****.

WebkitGTK Revision : 2.30 and we validated the safari 14 version we have faced the same output. Please advice for node insertion failure.

JS TestCode;

<html>
<head>
<script type = "text/javascript">
function Html2Element(element)
{
   var _div = document['createElement']("div");
   _div.innerHTML = element;

   return _div['firstChild'];
}
function CheckId()
{
   var _div = Html2Element("<svg width='10' height='10'>"+"<clippath><rect id='clip' /></clippath>"+"</svg>");
   document.writeln("Check Id"+_div['getElementById']('clip')+"*****");
}
</script>
</head>
<body onload="CheckId()">
</body>
</html>
Comment 1 sssdev 2021-07-15 21:02:56 PDT
Created attachment 433652 [details]
Sample HTML test-code

Sample HTML test-code
Comment 2 sssdev 2021-07-15 21:16:21 PDT
We have checked In DOM tree node properly maintained by using below HTML TestCode.

<html>
<head>
<script type = "text/javascript">
function Html2Element(element)
{
   var _div = document['createElement']("div");
   _div.innerHTML = element;

   //console.log("innerHTML"+_div.innerHTML+"********"+_div.innerHTML['firstChild']);
   return _div['firstChild'];
}
function checkChildNodes(_div)
{
   var svgElementChildes = _div.childNodes;
   for ( var childnodeindex = 0; childnodeindex < svgElementChildes.length; childnodeindex++ )
   {
	   document.writeln("Node ***"+svgElementChildes[childnodeindex]+"<br>");
	   checkChildNodes(svgElementChildes[childnodeindex]);
   }
}
function CheckId()
{	
   var _div = Html2Element("<svg width='10' height='10'>"+"<clippath><rect id='clip' /></clippath>"+"</svg>");
   document.writeln("Check Id"+_div['getElementById']('clip')+"*****<br>");
   checkChildNodes(_div);
}
</script>
</head>
<body onload="CheckId()">
</body>
</html>


Output of HTML TestPage while run in webkit 2.30:

Check Idnull*****
Node ***[object SVGClipPathElement]
Node ***[object SVGRectElement]