Javascript Safari无法将SVG元素替换为:NoModificationLowerError:无法修改该对象

Javascript Safari无法将SVG元素替换为:NoModificationLowerError:无法修改该对象,javascript,html,svg,safari,foreignobject,Javascript,Html,Svg,Safari,Foreignobject,我想将所有SVG的元素替换为foreignObject,它在基于FireFox和Chromium的浏览器中运行良好,但在Safari中失败 MWE: HTML/SVG <!DOCTYPE html> <html lang="en"> <body> <svg> <rect id="rect1" width="100" height="100"

我想将所有SVG的
元素替换为
foreignObject
,它在基于FireFox和Chromium的浏览器中运行良好,但在Safari中失败

MWE: HTML/SVG

<!DOCTYPE html>
<html lang="en">
  <body>
    <svg>
      <rect id="rect1" width="100" height="100" />
    </svg>
  </body>
</html>

JavaScript

let myRect = document.getElementById("rect1")
myRect.outerHTML = myRect.outerHTML.replace("<rect", "<foreignObject").replace("</rect>", "</foreignObject>")
let myRect=document.getElementById(“rect1”)

myRect.outerHTML=myRect.outerHTML.replace(“替换字符串非常容易出错

复制属性后替换元素..


设svg=svg;
svg.querySelectorAll(“rect”).forEach(rect=>{
设obj=document.createElements(“http://www.w3.org/2000/svg“,”外国物体“);
[…rect.attributes].map(({name,value})=>obj.setAttribute(name,value));
矩形替换为(obj);
});
console.log(SVG.outerHTML);

替换字符串非常容易出错

复制属性后替换元素..


设svg=svg;
svg.querySelectorAll(“rect”).forEach(rect=>{
设obj=document.createElements(“http://www.w3.org/2000/svg“,”外国物体“);
[…rect.attributes].map(({name,value})=>obj.setAttribute(name,value));
矩形替换为(obj);
});
console.log(SVG.outerHTML);

太棒了。谢谢!太棒了。谢谢!