DOMParser & SVG

js parse html to dom

https://developer.mozilla.org/zh-CN/docs/Web/API/DOMParser

https://davidwalsh.name/convert-html-stings-dom-nodes

https://alligator.io/js/domparser/

https://stackoverflow.com/questions/3103962/converting-html-string-into-dom-elements

Convert String to DOM Nodes

DOMParser().parseFromString

let doc = new DOMParser().parseFromString('<div><b>Hello!</b></div>', 'text/html');
let div = doc.body.firstChild; let divs = doc.body.querySelectorAll('div');

document.createRange().createContextualFragment


let frag = document.createRange().createContextualFragment('<div>One</div><div>Two</div>');
console.log(frag); /*
#document-fragment
<div>One</div>
<div>Two</div>
*/ let firstChild = frag.firstChild; let firstDiv = frag.querySelector('div');
let allDivs = frag.querySelectorAll('div'); // fragement // Use a DocumentFragment to store and then mass inject a list of DOM nodes
var frag = document.createDocumentFragment();
for(var x = 0; x < 10; x++) {
var li = document.createElement("li");
li.innerHTML = "List item " + x;
frag.appendChild(li);
}



namespace bug

<?xml version="1.0" encoding="UTF-8"?>

let str = `
<?xml version="1.0" encoding="UTF-8"?>
<svg width="847px" height="400px" viewBox="0 0 847 400" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
<title>Slice 1</title>
<desc>Created with Sketch.</desc>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect id="Rectangle" stroke="#979797" fill="#FBD5D5" x="103.5" y="0.5" width="632" height="147"></rect>
<text id="舞台" font-family="PingFangSC-Medium, PingFang SC" font-size="18" font-weight="400" fill="#000000">
<tspan x="402" y="81">舞台</tspan>
</text>
<rect id="Rectangle" stroke="#979797" fill="#5461F2" x="0.5" y="188.5" width="102" height="211"></rect>
<text id="A区" font-family="PingFangSC-Medium, PingFang SC" font-size="18" font-weight="400" fill="#000000">
<tspan x="36" y="301">A区</tspan>
</text>
<rect id="Rectangle" stroke="#979797" fill="#84FFEF" x="170.5" y="192.5" width="498" height="152"></rect>
<text id="B区" font-family="PingFangSC-Medium, PingFang SC" font-size="18" font-weight="400" fill="#000000">
<tspan x="405" y="275">B区</tspan>
</text>
<rect id="Rectangle" stroke="#979797" fill="#A25AF1" x="738.5" y="183.5" width="108" height="216"></rect>
<text id="C区" font-family="PingFangSC-Medium, PingFang SC" font-size="18" font-weight="400" fill="#000000">
<tspan x="787" y="294">C区</tspan>
</text>
</g>
</svg> `; let svgDom = new DOMParser().parseFromString(str, `image/svg+xml`);

OK


let str = `
<svg width="847px" height="400px" viewBox="0 0 847 400" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 61.2 (89653) - https://sketch.com -->
<title>Slice 1</title>
<desc>Created with Sketch.</desc>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect id="Rectangle" stroke="#979797" fill="#FBD5D5" x="103.5" y="0.5" width="632" height="147"></rect>
<text id="舞台" font-family="PingFangSC-Medium, PingFang SC" font-size="18" font-weight="400" fill="#000000">
<tspan x="402" y="81">舞台</tspan>
</text>
<rect id="Rectangle" stroke="#979797" fill="#5461F2" x="0.5" y="188.5" width="102" height="211"></rect>
<text id="A区" font-family="PingFangSC-Medium, PingFang SC" font-size="18" font-weight="400" fill="#000000">
<tspan x="36" y="301">A区</tspan>
</text>
<rect id="Rectangle" stroke="#979797" fill="#84FFEF" x="170.5" y="192.5" width="498" height="152"></rect>
<text id="B区" font-family="PingFangSC-Medium, PingFang SC" font-size="18" font-weight="400" fill="#000000">
<tspan x="405" y="275">B区</tspan>
</text>
<rect id="Rectangle" stroke="#979797" fill="#A25AF1" x="738.5" y="183.5" width="108" height="216"></rect>
<text id="C区" font-family="PingFangSC-Medium, PingFang SC" font-size="18" font-weight="400" fill="#000000">
<tspan x="787" y="294">C区</tspan>
</text>
</g>
</svg> `; let svgDom = new DOMParser().parseFromString(str, `image/svg+xml`);


DOMParser & SVG的更多相关文章

  1. d3 parse字符串形式的xml svg and append to element

    参考这个方法,但不想修改d3 https://gist.github.com/biovisualize/373c6216b5634327099a 虽然也绕了点弯,但还算很快了,比较满意,也学到了,记下 ...

  2. 【Web动画】SVG 实现复杂线条动画

    在上一篇文章中,我们初步实现了一些利用基本图形就能完成的线条动画: [Web动画]SVG 线条动画入门 当然,事物都是朝着熵增焓减的方向发展的,复杂线条也肯定比有序线条要多. 很多时候,我们无法人工去 ...

  3. 【Web动画】SVG 线条动画入门

    通常我们说的 Web 动画,包含了三大类. CSS3 动画 javascript 动画(canvas) html 动画(SVG) 个人认为 3 种动画各有优劣,实际应用中根据掌握情况作出取舍,本文讨论 ...

  4. SVG:textPath深入理解

    SVG的文本可以沿着一条自定义的Path来排布,比如曲线.圆形等等,使用方式如下所示(来源MDN): <svg viewBox="0 0 1000 300" xmlns=&q ...

  5. SVG:linearGradient渐变在直线上失效的问题解决方案

    SVG开发里有个较为少见的问题. 对x1=x2或者y1=y2的直线(line以及path),比如: <path d="M200,10 200,100" stroke=&quo ...

  6. HTML5_05之SVG扩展、地理定位、拖放

    1.SVG绘图总结: ①方法一:已有svg文件,<img src="x.svg">  方法二:<body><svg></svg>&l ...

  7. HTML5_04之SVG绘图

    1.关于Canvas绘制图像: 问题:需要绘制多张图片时,必须等待所有图片加载完成才能开始绘制:而每张图片都是异步请求,彼此没有先后顺序,哪一张先加载完成完全无法预测: 方案: var progres ...

  8. 关于SVG的viewBox

    在SVG中,通过svg标记的 width和height可以规定这段SVG代码所表达的数据在绘制时所占用的空间大小 如下代码svg设置了宽度与高度,rect同样,所以结果自然是全屏 <svg wi ...

  9. JavaScript权威设计--jQuery,Ajax.animate,SVG(简要学习笔记二十)[完结篇]

    1.$和jquery在全局命名空间中定义的唯一两个变量.   2.jquery是工厂函数,不是构造函数.他返回一个新创建的对象.   3.jquery的四种调用方式:     <1>传递C ...

随机推荐

  1. TCMalloc源码学习(二)

    替换libc中的malloc free 不同平台替换方式不同. 基于unix的系统上的glibc,使用了weak alias的方式替换.具体来说是因为这些入口函数都被定义成了weak symbols, ...

  2. LOJ10159旅游规划

    题目描述 W 市的交通规划出现了重大问题,市政府下定决心在全市各大交通路口安排疏导员来疏导密集的车流.但由于人员不足,W 市市长决定只在最需要安排人员的路口安排人员. 具体来说,W 市的交通网络十分简 ...

  3. Language Guide (proto3) | proto3 语言指南(十五)生成类

    Generating Your Classes - 生成类 要生成Java.Python.C++.Go.Ruby.ObjuleC或C代码,需要使用.proto文件中定义的消息类型,还需要在.proto ...

  4. 用RabbitMQ了好几年之后,我总结出来5点RabbitMQ的使用心得

    大概从 2013 年开始,我就开始了自己和 RabbitMQ 的接触,到现在已经有七年多了. 在这七年中,既有一些对 RabbitMQ 的深度体验,更有无数的血泪史. 而根据我这么多年的使用经验,我将 ...

  5. 九:SpringBoot-整合Mybatis框架,集成分页助手插件

    九:SpringBoot-整合Mybatis框架,集成分页助手插件 1.Mybatis框架 1.1 mybatis特点 1.2 适用场景 2.SpringBoot整合MyBatis 2.1 核心依赖 ...

  6. 换一种视角看DNS(采坑篇)

    换一种视角看DNS 我们尽量用精炼的语言,尽可能的规划DNS的全貌(当然笔者水平有限,如有错误请不吝赐教). 通常啊我们在个人PC中能看到DNS的配置身影就是在上网的时候,通常如果你不配置DNS可能找 ...

  7. 天天写同步,5种SpringMvc异步请求了解下!

    引言 说到异步大家肯定首先会先想到同步.我们先来看看什么是同步? 所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作. 简单来说,同步就是必须一件一件事做,等前一件 ...

  8. Nginx图文详解

    想必大家一定听说过 Nginx,若没听说过它,那么一定听过它的"同行"Apache 吧! Nginx 的产生 Nginx 同 Apache 一样都是一种 Web 服务器.基于 RE ...

  9. 如何用RabbitMQ实现延迟队列

    前言 在 jdk 的 juc 工具包中,提供了一种延迟队列 DelayQueue.延迟队列用处非常广泛,比如我们最常见的场景就是在网购或者外卖平台中发起一个订单,如果不付款,一般 15 分钟后就会被关 ...

  10. 图片轮播展示效果-2D实现

    图片的轮播展示效果如果使用2D实现,需要将3D中存在的近大远小效果使用图片的缩放呈现,因此需要存储和计算图片的位置同时还要计算存储图片的缩放信息.将所有图片的位置连线看作是一个椭圆,就可以根据图片的个 ...