Snap.SVG 中随机失败的 Clone()

Randomly failing Clone() in Snap.SVG

我遇到了一个问题,有时 clone()Element.insertAfter 中失败,因为 el.node.parentNode 为空。

顶层内html

Snap.load(path, function (data) {
    window.picto_svg = data.select('svg');
    ...
    jQuery('#content').load('interior.html');
});

里面interior.html

$(document).ready(function () {
    var svg_copy = picto_svg.clone();
});

我只是很幸运,它通常不会失败吗?我不想在克隆之前显示 svg。我最终克隆了它并多次调整克隆,所以只想保留一个纯的。

我可能会 post 在 jsfiddle 上编写更多代码,因为没有足够的信息可以确定。

但是,我的第一个猜测是您需要移动这条线..

var svg_copy = picto_svg.clone();

在 Snap.load 函数内。问题可能是您试图在文件加载之前创建一个克隆,所以有时它可以工作,有时却不能。

也不清楚您是否也附加了 svg,但首先我要确保所有依赖于正在加载的文件的函数调用和变量赋值都是从加载函数中调用的。

是的,看来我走运了。要可靠地克隆一个元素,必须首先附加它。我附加到一个隐藏的 div 并且随机失败消失了。

Snap.load(path, function (data) {
  var placeholder = Snap('#placeholder');
  var appended = placeholder.append(data);
  window.picto_svg = placeholder.select('svg');

http://codepen.io/matelich/pen/BKyVYv