您可以使用 img 标签,并且仍然使用文档模型编辑 SVG。所需要的只是一点想法。我一直在研究类似的问题,其中 svg 文本需要可编辑,因此我需要单击鼠标来激活编辑。
如果你希望你的 SVG 是可点击的,那么 object 标签不是要走的路。它将所有事件重新路由到其内容,并且无法在其顶部放置透明 div,因为该对象自动成为顶部项目,因此您嵌入的对象始终可以接收鼠标事件。(想想 Flash 视频播放器)。
您可以做的是使用 XMLSerializer 和 createObjectURL 将您的 svg 转换为 blob,然后可以使用以下命令将其显示为 img 标签,其中 mysvg 是一个 SVG,已使用 xhttp 加载并解析为 xml 文档:
var mysvg = xhttp.responseXML;
var xml2str = new XMLSerializer();
var svg_blob = new Blob([xml2str.serializeToString(mysvg)],{'type': "image/svg+xml"});
var url = URL.createObjectURL(svg_blob);
document.getElementById("svg1").src = url;
svg1 是一个 img 标签,它很乐意接受您希望使用的任何事件处理程序。