是否可以使用javascript获取外部css文件的内容以添加到svg文件?

Tra*_*vis 2 javascript css svg

我需要获取外部css文件的内容才能将其添加到svg.

我正在寻找的实际上是css的toString方法.这可能吗?我还没有找到解决方案.

这是解决方案xml我正在寻找svg:

 <?xml version="1.0" standalone="no"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
      "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <svg xmlns="http://www.w3.org/2000/svg" version="1.1"
         width="10cm" height="5cm" viewBox="0 0 1000 500">
      <defs>
        <style type="text/css"><![CDATA[
          rect {
            fill: red;
            stroke: blue;
            stroke-width: 3
          }
        ]]></style>
      </defs>
      <rect x="200" y="100" width="600" height="300"/>
    </svg>
Run Code Online (Sandbox Code Playgroud)

我尝试使用外部链接,但它没有呈现样式:

<?xml version="1.0" standalone="no"?>
<?xml-stylesheet href="mystyle.css" type="text/css"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
     width="10cm" height="5cm" viewBox="0 0 1000 500">
  <rect x="200" y="100" width="600" height="300"/>
</svg>
Run Code Online (Sandbox Code Playgroud)

编辑:我本应该添加这个原创 我在浏览器中有svg渲染,因为它可以访问svg.

我需要做的是将svg发送到服务器进行进一步处理(转换格式,保存到数据库..).问题是由于css不包含在svg xml中,因此样式丢失了.我需要像上面的第一个代码块一样将css添加到svg本身,这样我就能保留样式.

wou*_*out 7

如果您能够使用JavaScript,您可以获得样式表的内容,如下所示:

[].slice.call(document.styleSheets[1].cssRules).forEach(function(rule){
  console.log('rule:', rule.cssText)
})
Run Code Online (Sandbox Code Playgroud)

document.styleSheets[1]样式表在哪里?