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

时间:2016-03-01 05:26:43

标签: javascript 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');
});

Inside.html内部

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

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

2 个答案:

答案 0 :(得分:0)

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

然而,我的第一个猜测是你需要移动这条线..

var svg_copy = picto_svg.clone();

Snap.load函数内部。问题可能是您在加载文件之前尝试创建克隆,因此有时它可以工作,有时它不会。

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

答案 1 :(得分:0)

是的,似乎我很幸运。要可靠地克隆元素,必须先附加它。我附加到一个隐藏的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