Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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绘图在事件阶段2失败_Javascript_Canvas_Svg - Fatal编程技术网

画布上的Javascript SVG绘图在事件阶段2失败

画布上的Javascript SVG绘图在事件阶段2失败,javascript,canvas,svg,Javascript,Canvas,Svg,我试图在画布上嵌入SVG,但当SVG从我自己的域提供时,我遇到了一个错误。奇怪的是,如果我将同一个图像托管在不同的服务器上,它就可以正常工作。我正在测试的图像就是那个。即使我wget将图像放入图像文件夹,我也会得到相同的错误。但是,如果我用将其放在文档中,它确实可以工作,但如果我用javascript设置源代码并在画布上绘制,则不会工作 以下是我正在使用的代码,当图像托管在我的域中时会出现哪些错误: var canvas = document.getElementById('my-canvas'

我试图在画布上嵌入SVG,但当SVG从我自己的域提供时,我遇到了一个错误。奇怪的是,如果我将同一个图像托管在不同的服务器上,它就可以正常工作。我正在测试的图像就是那个。即使我
wget
将图像放入图像文件夹,我也会得到相同的错误。但是,如果我用
将其放在文档中,它确实可以工作,但如果我用javascript设置源代码并在画布上绘制,则不会工作

以下是我正在使用的代码,当图像托管在我的域中时会出现哪些错误:

var canvas = document.getElementById('my-canvas'),
    ctx = canvas.getContext('2d'),
    img = new Image();
img.onload = function() { ctx.drawImage(img, 0, 0); };
img.onerror = function(err) { console.log(err); };
img.src = '/images/tiger.svg'; // replacing this with 'http://phrogz.net/svg/tiger.svg' does work
这是Firebug的错误数据

NONE                          0
defaultPrevented            false
multipleActionsPrevented    false
stopImmediatePropagation    stopImmediatePropagation()  
bubbles                     false
cancelable                  false
eventPhase                    2
isTrusted                   true
timeStamp                   1373387631408000
type                        "error"

托管SVG的服务器必须发送正确的头,并且不是每台服务器都配置为发送正确的头

这里有一个很好的导游

如果您使用的是apache,则可以使用以下代码将htaccess文件添加到目录中:

AddType image/svg+xml svg svgz
AddEncoding gzip svgz
这会将头发送到SVG和压缩版本SVGZ


希望这有帮助

能否从该文件夹(服务器上)加载其他图像(例如位图图像)?文件夹已设置读取权限?@Ken AbdiasSoftware是的,我可以从那里加载其他图像,并且在将权限设置为777后,我也尝试了,但没有成功。您是否尝试了图像到服务器的绝对路径?你的js脚本是从哪个文件夹运行的(root,/js,…)?我也尝试过绝对路径,但仍然不起作用。脚本从Web服务器根目录运行。SVG文件的MIME类型是否正确?