Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.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 Snap.load()外部SVG无法加载_Javascript_Svg_Snap.svg - Fatal编程技术网

Javascript Snap.load()外部SVG无法加载

Javascript Snap.load()外部SVG无法加载,javascript,svg,snap.svg,Javascript,Svg,Snap.svg,问题: 我正在使用Snap.svg创建一些基本的交互式图形,但由于某些原因,我无法使用Snap.load()加载外部svg文件。我已经直接从snap.io中提取了代码,并对文档进行了反复检查。我的SVG文件在浏览器中呈现得很好,它只是不显示在捕捉SVG中。其他形状(即未使用Snap.load()拉入)也会显示 代码: 我已经将我的示例归结为可以想象的最简单的HTML和SVG文件,Snap.load()方法仍然不适用于我。有人看到我遗漏了什么吗 HTML: -但仍然没有显示外部SVG。我试着使用了

问题: 我正在使用Snap.svg创建一些基本的交互式图形,但由于某些原因,我无法使用
Snap.load()
加载外部svg文件。我已经直接从snap.io中提取了代码,并对文档进行了反复检查。我的SVG文件在浏览器中呈现得很好,它只是不显示在捕捉SVG中。其他形状(即未使用
Snap.load()
拉入)也会显示

代码: 我已经将我的示例归结为可以想象的最简单的HTML和SVG文件,Snap.load()方法仍然不适用于我。有人看到我遗漏了什么吗

HTML:


-但仍然没有显示外部SVG。我试着使用了,只是为了确保文件本身或我的域没有问题。

加载函数需要回调,因为加载可能需要一些时间。所以我想你会做如下的事情

var s = Snap("#svg");
Snap.load("svgtest.svg", onSVGLoaded ) ;

function onSVGLoaded( data ){ 
    s.append( data );
}

编辑:如果不是从与脚本相同的服务器访问,可能会出现一些访问控制问题,请检查控制台日志中是否有任何错误。

我只是在Internet Explorer中遇到了这个问题,结果是因为我加载的SVG文件是一个缩小的文件,其中doctype已被删除。其他浏览器没有doctype也可以,但保留doctype也修复了IE中的问题:

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

发行版中有一个小错误-请参阅。建议的修复程序工作正常。在线演示之所以有效,是因为它引用的是库的旧版本。

安装了0.5.1版。以上正确答案中的代码需要按如下方式重新编写才能正常工作:

var s = Snap();
Snap.load("svgtest.svg", onSVGLoaded ) ;

function onSVGLoaded( data ){ 
    s.append( data );
}

我认为您现在遇到的问题是无法加载远程外部文件。通常,该文件将位于同一服务器上。(我猜,根据服务器上的访问控制设置,您可能可以加载一些文件)。因此,如果最初的问题是针对所描述的本地文件,这在很大程度上取决于。果然,控制台中出现了访问控制错误。当我在同一台服务器上更改为svg时,它已加载。谢谢@Ian!
var s = Snap("#svg");
Snap.load("svgtest.svg", onSVGLoaded ) ;

function onSVGLoaded( data ){ 
    s.append( data );
}
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
svgmin: {
    options: {
        plugins: [
            { removeDoctype: false }
        ]
    }
    // etc...
}
var s = Snap();
Snap.load("svgtest.svg", onSVGLoaded ) ;

function onSVGLoaded( data ){ 
    s.append( data );
}