Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用javascript将外部css文件的内容添加到svg文件中?_Javascript_Css_Svg - Fatal编程技术网

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

是否可以使用javascript将外部css文件的内容添加到svg文件中?,javascript,css,svg,Javascript,Css,Svg,我需要获取外部css文件的内容,以便将其添加到svg 我要寻找的实际上是css的toString方法。这可能吗?我还没有找到解决办法 以下是我为svg寻找的xml解决方案: <?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">

我需要获取外部css文件的内容,以便将其添加到svg

我要寻找的实际上是css的toString方法。这可能吗?我还没有找到解决办法

以下是我为svg寻找的xml解决方案:

 <?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>

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

<?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>

编辑:我本来应该添加此内容的 我在浏览器中可以很好地呈现svg,因为它可以访问svg


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

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

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

其中
document.styleSheets[1]
是您的样式表

使用ajax,然后获得样式?如果使用正确的mime类型,外部链接应该可以工作。您是否已经能够检索css文件的内容,但不知道如何提取特定部分?外部css是同一个域吗?谢谢。这就可以了。但是,指定数组索引似乎不是最好的选择。有没有一种方法可以根据文件名检索该文件?也许您可以尝试在link标记上添加一个类名,然后遍历所有样式表以查找匹配项。类似于
if(document.styleSheets[i].ownerNode.className==“yourclass”){/…get rules…}