将指向 SVG 的链接转换为内联 SVG 元素 [英] Convert link to a SVG into an inline SVG element
问题描述
是否可以将链接转换为外部 SVG,例如 http://upload.wikimedia.org/wikipedia/en/4/4a/Commons-logo.svg 到一个元素?
我的第一种方法是获取 svg 页面的源代码,但这对于 Javascript 中的外部源是不可能的.
内联加载 svg 文件的最简洁方法是在您的网页上创建一个 DIV 并通过 XMLHttpRequest
加载 svg 文件并使用 innerHTML
然后您可以根据需要检查/更改文件.
以下是将您的文件调用到网页中的示例:
<html xmlns="http://www.w3.org/1999/xhtml"><头><title>内联加载SVG文件</title><meta http-equiv="content-type" content="text/html; charset=UTF-8">头部><body style='padding:0px;font-family:arial'><center><h4>内联加载SVG文件</h4><div style='width:90%;background-color:gainsboro;text-align:justify;padding:10px;border-radius:6px;'>加载一个 svg 文件作为内联 SVG.这为动态 svg 应用程序提供了对其元素的无缝 DOM 访问.使用 <b>XMLHttpRequest</b>.它可以作为 DIV 的 <b>innerHTML</b> 加载.通过字符串转储 (<b>responseText</b>).
<div id="svgDiv"></div><p><button onClick=changeSomeValues()>change</button></p>SVG DOM:
<textarea id=mySvgValue style='width:90%;height:200px;font-size:120%;font-family:lucida console;'></textarea><br/>Javascript:<br/><textarea id=jsValue style='border-radius:26px;font-size:110%;font-weight:bold;color:midnightblue;padding:16px;background-color:beige;border-width:0px;font-size:100%;font-family:lucida console;width:90%;height:400px'></textarea></中心><div id='browserDiv' style='padding:3px;position:absolute;top:5px;left:5px;background-color:gainsboro;'></div><script id=myScript>函数 loadSVGasXML(){var SVGFile="http://upload.wikimedia.org/wikipedia/en/4/4a/Commons-logo.svg"var loadXML = 新 XMLHttpRequest;函数处理程序(){if(loadXML.readyState == 4 &&loadXML.status == 200){svgDiv.innerHTML=loadXML.responseTextmySvgValue.value= svgDiv.innerHTML}}如果 (loadXML != null){loadXML.open("GET", SVGFile, true);loadXML.onreadystatechange = 处理程序;loadXML.send();}}//- 按钮 - -函数 changeSomeValues(){path4653.style.fill="绿色"mySvgValue.value=svgDiv.innerHTML}<脚本>document.addEventListener("onload",init(),false)函数初始化(){加载SVGasXML()jsValue.value=myScript.textmySvgValue.value=svgDiv.innerHTML}