Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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获取原始SVG viewBox_Javascript_Svg - Fatal编程技术网

通过javascript获取原始SVG viewBox

通过javascript获取原始SVG viewBox,javascript,svg,Javascript,Svg,我们的系统通过AJAX以编程方式将SVG文件加载到HTML中。典型的SVG文件以以下内容开头: <svg xmlns='http://www.w3.org/2000/svg' viewBox='0,0 65415,41616' xml:space='preserve' height='50.000cm' width='50.000cm' xmlns:xlink='http://www.w3.org/1999/xlink 您需要查看指定属性的接口。svg元素的接口扩展了该接口,因此该属

我们的系统通过AJAX以编程方式将SVG文件加载到HTML中。典型的SVG文件以以下内容开头:

 <svg xmlns='http://www.w3.org/2000/svg' viewBox='0,0 65415,41616' xml:space='preserve' height='50.000cm'  width='50.000cm' xmlns:xlink='http://www.w3.org/1999/xlink

您需要查看指定属性的接口。
svg
元素的接口扩展了该接口,因此该属性在元素对象上可用:

const svgElement=document.getElementById(“示例svg”);
常量{x,y,宽度,高度}=svgElement.viewBox.baseVal;
  • 打开web浏览器控制台
  • 键入代码:

    var box = svg.viewBox.baseVal;
    [ box.x, box.y, box.width, box.height ]
    
    var svg=document.querySelector('svg');
    var-box=svg.getAttribute('viewBox');
    框。拆分(/\s+|,/);
    
  • 观察光荣的回应:

    [“-350”、“-250”、“700”、“500”]
    
  • 或者,键入代码:

    var box = svg.viewBox.baseVal;
    [ box.x, box.y, box.width, box.height ]
    
  • 观察光荣的回应:

    [-350,-250700500]
    

  • 换句话说:是的,您可以从DOM中获取viewBox,既可以作为一个视图框,也可以作为一个视图框。

    更简单的是,在svg中添加一个id,然后:

    document.getElementById("your_id").getAttribute("viewBox");
    

    上面的receipes为x、y、width和height viewBox属性提供了全部零,除非至少有一个是通过编程更改的

    我终于成功了

    var width = document.getElementById("mysvg").getAttribute("width");
    

    这就是我最初尝试的。所以我又试了一次,但是var-box=svg.getAttribute('viewBox');即使svg元素显然是调试器中的正确节点,也会为我获取一个“未定义”节点。其他属性如“高度”可以通过这种方式检索,但不能检索“viewBox”。另一种方法svg.viewBox.baseVal给我一个“0,0,0,0”框。我的问题可能与通过AjaxI加载SVG有关。我也有同样的问题,不涉及Ajax。询问“通过javascript获取原始SVG viewBox”2。请注意这个精彩的回答。@TonyEastwood否您的问题与Ajax无关-看起来更像是您没有定义属性viewBox。没有解决方案吗?只需链接?
    svg.viewBox.baseVal.width
    即可获得宽度。对于
    x
    y
    height
    我有一个问题,答案对我非常有用。如果能详细了解它为什么被关闭,那就太好了。这里也一样。。。投票重新打开。问题已关闭,因为OP发现他们正在调用viewBox上的removeAttribute。他们写了一个答案说,但它被一个国防部删除了。