当前位置: 首页 > news >正文

网站建设学费我的营业执照网上查询

网站建设学费,我的营业执照网上查询,30岁学设计师晚不晚,做暧暧视频免费网站为什么使用new DOMParser可以保持SVG命名空间#xff1a; 一、命名空间基础概念 1. XML命名空间定义 svg xmlnshttp://www.w3.org/2000/svg!-- 此元素及其子元素属于SVG命名空间 --rect x10 y20/ /svg…为什么使用new DOMParser可以保持SVG命名空间 一、命名空间基础概念 1. XML命名空间定义 svg xmlnshttp://www.w3.org/2000/svg!-- 此元素及其子元素属于SVG命名空间 --rect x10 y20/ /svgxmlns属性定义默认命名空间作用避免元素名称冲突 2. DOM中的命名空间表示 const svgElem document.createElementNS(http://www.w3.org/2000/svg, svg); console.log(svgElem.namespaceURI); // 输出: http://www.w3.org/2000/svg二、DOMParser的工作原理 1. 解析过程分析 const parser new DOMParser(); const doc parser.parseFromString(svgString, image/svgxml);关键步骤 根据MIME类型image/svgxml初始化解析器创建符合SVG规范的DOM树自动处理命名空间声明 2. 命名空间处理机制 #mermaid-svg-MlETWLWHWfcly45g {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MlETWLWHWfcly45g .error-icon{fill:#552222;}#mermaid-svg-MlETWLWHWfcly45g .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-MlETWLWHWfcly45g .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-MlETWLWHWfcly45g .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-MlETWLWHWfcly45g .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-MlETWLWHWfcly45g .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-MlETWLWHWfcly45g .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-MlETWLWHWfcly45g .marker{fill:#333333;stroke:#333333;}#mermaid-svg-MlETWLWHWfcly45g .marker.cross{stroke:#333333;}#mermaid-svg-MlETWLWHWfcly45g svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-MlETWLWHWfcly45g .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-MlETWLWHWfcly45g text.actortspan{fill:black;stroke:none;}#mermaid-svg-MlETWLWHWfcly45g .actor-line{stroke:grey;}#mermaid-svg-MlETWLWHWfcly45g .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-MlETWLWHWfcly45g .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-MlETWLWHWfcly45g #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-MlETWLWHWfcly45g .sequenceNumber{fill:white;}#mermaid-svg-MlETWLWHWfcly45g #sequencenumber{fill:#333;}#mermaid-svg-MlETWLWHWfcly45g #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-MlETWLWHWfcly45g .messageText{fill:#333;stroke:#333;}#mermaid-svg-MlETWLWHWfcly45g .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-MlETWLWHWfcly45g .labelText,#mermaid-svg-MlETWLWHWfcly45g .labelTexttspan{fill:black;stroke:none;}#mermaid-svg-MlETWLWHWfcly45g .loopText,#mermaid-svg-MlETWLWHWfcly45g .loopTexttspan{fill:black;stroke:none;}#mermaid-svg-MlETWLWHWfcly45g .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-MlETWLWHWfcly45g .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-MlETWLWHWfcly45g .noteText,#mermaid-svg-MlETWLWHWfcly45g .noteTexttspan{fill:black;stroke:none;}#mermaid-svg-MlETWLWHWfcly45g .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-MlETWLWHWfcly45g .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-MlETWLWHWfcly45g .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-MlETWLWHWfcly45g .actorPopupMenu{position:absolute;}#mermaid-svg-MlETWLWHWfcly45g .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-MlETWLWHWfcly45g .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-MlETWLWHWfcly45g .actor-man circle,#mermaid-svg-MlETWLWHWfcly45g line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-MlETWLWHWfcly45g :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} DOMParser Document 创建文档对象 设置文档类型为SVG 解析字符串时自动添加命名空间 返回带有正确命名空间的DOM树 DOMParser Document 三、对比不同解析方式 1. 错误方式innerHTML const div document.createElement(div); div.innerHTML svgrect x10//svg; const svg div.querySelector(svg); console.log(svg.namespaceURI); // 输出: null (HTML命名空间)问题 在HTML文档上下文中解析SVG元素被当作自定义HTML元素 2. 正确方式DOMParser const doc new DOMParser().parseFromString(svgrect x10//svg, image/svgxml ); const svg doc.documentElement; console.log(svg.namespaceURI); // 输出: http://www.w3.org/2000/svg优势 在独立文档中解析保留原始命名空间信息 四、命名空间保持的关键因素 1. MIME类型指定 // 正确指定MIME类型 parseFromString(content, image/svgxml)// 错误示例解析为HTML parseFromString(content, text/html)2. 文档类型创建 // DOMParser内部实现伪代码 function parseFromString(string, mimeType) {const doc createDocumentForType(mimeType);parseXML(string, doc);return doc; }当mimeType为image/svgxml时创建SVG规范的文档 3. 元素创建规则 // 解析器创建元素时的逻辑 function createElement(tagName) {if (currentNamespace SVG_NS) {return document.createElementNS(SVG_NS, tagName);}// ...其他命名空间处理 }五、实际案例分析 1. 保留命名空间的重要性 示例代码 // 使用DOMParser解析 const doc parser.parseFromString(svgforeignObject xmlnshttp://www.w3.org/1999/xhtmldiv//foreignObject/svg,image/svgxml );const div doc.querySelector(div); console.log(div.namespaceURI); // 输出: http://www.w3.org/1999/xhtml说明 foreignObject内的div保持XHTML命名空间样式和事件处理正常 2. 命名空间错误的影响 // 错误解析后的元素 const svg document.createElement(svg); const rect document.createElement(rect); svg.appendChild(rect);console.log(rect.namespaceURI); // 输出: null rect.setAttribute(x, 10); // 属性可能无法生效后果 CSS选择器失效无法匹配SVG元素部分属性无法被正确解析动画和交互功能异常 六、源码级解析以Chromium为例 1. DOMParser实现 源码位置third_party/blink/renderer/core/xml/dom_parser.cc 关键代码段 Document* DOMParser::parseFromString(const String str,const String type) {// 根据MIME类型创建文档Document* doc CreateDocument(type,GetExecutionContext(),EnsureParserCreated(GetExecutionContext()-GetSecurityOrigin()));// 解析内容doc-SetContent(str);return doc; }2. SVG文档创建 源码位置third_party/blink/renderer/core/xml/document_init.cc DocumentInit DocumentInit::Create() {if (MIMETypeRegistry::IsSVGMIMEType(mime_type)) {return DocumentInit::CreateSVG();}// ...其他类型处理 }七、总结 为什么processSVG函数通过DOMParser可以保持命名空间 专用文档上下文 DOMParser根据image/svgxml MIME类型创建符合SVG规范的文档环境 元素创建规则 在解析过程中自动使用createElementNS创建元素 命名空间继承机制 子元素自动继承父元素的命名空间 属性处理一致性 保留原始属性中的命名空间声明如xlink:href 标准化解析流程 遵循XML解析规范正确处理命名空间前缀 关键优势 确保SVG元素被正确识别保留所有命名空间相关功能如XLink引用兼容各种SVG查看器和编辑器 验证方法 const doc new DOMParser().parseFromString(svg xmlnshttp://www.w3.org/2000/svg/svg,image/svgxml ); console.log(doc.documentElement.namespaceURI); // 输出: http://www.w3.org/2000/svg附录一、DOMParser 保持命名空间的核心机制 1. MIME 类型驱动解析 // 关键代码 const doc new DOMParser().parseFromString(svgString, image/svgxml);MIME 类型识别image/svgxml 明确告知解析器处理 SVG 内容文档类型创建生成符合 SVG 规范的 XML 文档对象 2. 命名空间自动继承 !-- 解析后的 DOM 结构 -- svg xmlnshttp://www.w3.org/2000/svgrect x10 y20/ !-- 自动继承 SVG 命名空间 -- /svg3. 元素创建规则 解析器内部使用 createElementNS 方法 // 伪代码实现 function createElement(tagName) {return document.createElementNS(http://www.w3.org/2000/svg, tagName); }二、命名空间保持验证 1. 元素级验证 const svg doc.documentElement; console.log(svg.namespaceURI); // 输出http://www.w3.org/2000/svgconst rect doc.querySelector(rect); console.log(rect.namespaceURI); // 输出http://www.w3.org/2000/svg2. 属性级验证 const useElem doc.querySelector(use); console.log(useElem.getAttributeNS(http://www.w3.org/1999/xlink, href )); // 正确获取 xlink:href 属性三、与其他解析方式的对比 解析方式命名空间保持元素识别适用场景innerHTML❌作为普通元素简单HTML片段createElementNS✅准确识别动态创建元素DOMParser✅准确识别完整文档解析XMLSerializer✅序列化保留文档转换输出 四、实现原理图示 #mermaid-svg-XXeFDbXfHZ3GAfZA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-XXeFDbXfHZ3GAfZA .error-icon{fill:#552222;}#mermaid-svg-XXeFDbXfHZ3GAfZA .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-XXeFDbXfHZ3GAfZA .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-XXeFDbXfHZ3GAfZA .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-XXeFDbXfHZ3GAfZA .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-XXeFDbXfHZ3GAfZA .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-XXeFDbXfHZ3GAfZA .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-XXeFDbXfHZ3GAfZA .marker{fill:#333333;stroke:#333333;}#mermaid-svg-XXeFDbXfHZ3GAfZA .marker.cross{stroke:#333333;}#mermaid-svg-XXeFDbXfHZ3GAfZA svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-XXeFDbXfHZ3GAfZA .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-XXeFDbXfHZ3GAfZA .cluster-label text{fill:#333;}#mermaid-svg-XXeFDbXfHZ3GAfZA .cluster-label span{color:#333;}#mermaid-svg-XXeFDbXfHZ3GAfZA .label text,#mermaid-svg-XXeFDbXfHZ3GAfZA span{fill:#333;color:#333;}#mermaid-svg-XXeFDbXfHZ3GAfZA .node rect,#mermaid-svg-XXeFDbXfHZ3GAfZA .node circle,#mermaid-svg-XXeFDbXfHZ3GAfZA .node ellipse,#mermaid-svg-XXeFDbXfHZ3GAfZA .node polygon,#mermaid-svg-XXeFDbXfHZ3GAfZA .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-XXeFDbXfHZ3GAfZA .node .label{text-align:center;}#mermaid-svg-XXeFDbXfHZ3GAfZA .node.clickable{cursor:pointer;}#mermaid-svg-XXeFDbXfHZ3GAfZA .arrowheadPath{fill:#333333;}#mermaid-svg-XXeFDbXfHZ3GAfZA .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-XXeFDbXfHZ3GAfZA .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-XXeFDbXfHZ3GAfZA .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-XXeFDbXfHZ3GAfZA .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-XXeFDbXfHZ3GAfZA .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-XXeFDbXfHZ3GAfZA .cluster text{fill:#333;}#mermaid-svg-XXeFDbXfHZ3GAfZA .cluster span{color:#333;}#mermaid-svg-XXeFDbXfHZ3GAfZA div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-XXeFDbXfHZ3GAfZA :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 根据MIME类型 使用createElementNS 原始SVG字符串 DOMParser解析 创建SVG文档对象 解析元素 创建SVG元素 保留命名空间属性 生成完整DOM树 五、关键优势总结 精准元素识别浏览器正确渲染SVG元素属性完整性保留xlink:href等命名空间属性样式兼容CSS选择器正确匹配脚本操作可靠DOM API可正常操作元素数据交换无损序列化后保持原始结构 六、代码验证示例 script function testNamespace() {const svgString svg xmlnshttp://www.w3.org/2000/svg xmlns:xlinkhttp://www.w3.org/1999/xlinkuse xlink:href#icon//svg;// 使用DOMParser解析const doc new DOMParser().parseFromString(svgString, image/svgxml);const useElem doc.querySelector(use);// 验证命名空间console.log(SVG命名空间:, doc.documentElement.namespaceURI http://www.w3.org/2000/svg);// 验证跨命名空间属性console.log(XLink属性读取:,useElem.getAttributeNS(http://www.w3.org/1999/xlink, href) #icon); }testNamespace(); // 输出: true, true /script结论DOMParser 通过 MIME 类型识别、命名空间感知的元素创建和属性处理机制确保 SVG 文档的命名空间完整性这是其他解析方式无法替代的核心优势。
http://www.w-s-a.com/news/572246/

相关文章:

  • 网站建设+管理系统开发山东专业网站建设公司
  • 基础微网站开发咨询中国印花图案设计网站
  • 找最新游戏做视频网站天津市招标投标公共服务平台
  • 电影订票网站怎么做注册地址出租多少钱
  • 做网站的规划和设想怎样做能让招聘网站记住密码
  • 建站知乎网站公告建设方案
  • 济南市住房和城乡建设局官方网站淮阳住房和城乡建设网站
  • 网站的设计特点有哪些seo推广要多少钱
  • wordpress开通多站点好处软件开发外包公司的设计一般多少钱
  • 为什么我的网站做不起来微信网页版登录手机版下载
  • 苏州市建设职业中心网站北京网站优化方法
  • 于飞网站开发溧阳 招网站开发
  • 网站中的宣传册翻页动画怎么做长沙有哪些网络平台公司
  • 如何做视频门户网站网站建设模板ppt
  • 青岛黄岛区网站开发百度云盘登录入口
  • 建设银行甘肃省行网站房地产市场调研报告
  • js 网站制作合肥公司网站建设
  • 最好建网站系统的软件wordpress调用模版
  • 个人网站备案地址阿里云增加网站
  • 自己做网站要办手续吗重庆短视频制作公司排名
  • 哪个全球购网站做的好汉中门户网官网
  • 网站建设有哪几种wordpress 项目选项
  • 成都网站建设开发公司哪家好验证码插件 wordpress
  • 企业网站设计要点泰州市网站制作公司
  • 网站用户运营北京官方网站怎么做
  • 农业门户网站开发做首图的网站
  • wordpress 素材站模板怎么制作网站程序
  • 做ps合成的网站wordpress付费查看下载主题
  • 个人网站建设完整教程wordpress服务器搬迁
  • wordpress.主题广州 网站优化