В случае:
char *x = "fred";
x является lvalue - ему может быть присвоено. Но в случае:
char x[] = "fred";
x не является lvalue, это rvalue - вы не можете назначить ему.
Это быстрый способ сделать это, что хорошо работает. Я не заметил никаких мерцающих или связанных с производительностью проблем.
Просто добавьте узел svg в его исходное место:
if (navigator.appVersion.indexOf("MSIE 10") != -1) {
svgNode.parentNode.insertBefore(svgNode, svgNode);
}
Конечно, вы можете использовать любой браузер, обнюхивающий выбор ..
Я хочу немного рассказать об удивительном ответе @ChristianLund и о том, как я успешно использовал его в своем коде
. В моей силовой анимации у меня есть функция tick
, которая выглядит так:
force.on("tick", function() {
...
});
Я также сохраняю все мои ссылки в графе внутри переменной link
, определенные следующим образом:
var link = svg.selectAll(".link").data(links).enter() ...
Теперь, чтобы реализовать магию, предложенную Кристианом, я Я добавил эту строку в начале моей функции tick
:
force.on("tick", function() {
link.each(function() {this.parentNode.insertBefore(this, this); });
...
});
Это, похоже, исправляет проблемы IE 10 ... конечно, рекомендуется добавить этот патч только в IE 10
Вы можете попробовать этот взлом:
$("#button4").click(function () {
$("#line1")[0].setAttributeNS(null, "x1", 50);
$("#line1")[0].setAttributeNS(null, "y1", 50);
$("#line1")[0].setAttributeNS(null, "x2", 150);
$("#line1")[0].setAttributeNS(null, "y2", 50);
var oldAttValueDisplay = $("#line1")[0].getAttributeNS(null, "display");
$("#line1")[0].setAttributeNS(null, "display", "none");
setTimeout(function() {$("#line1")[0].setAttributeNS(null, "display", oldAttValueDisplay);}, 0);
// static: setTimeout(function() {$("#line1")[0].setAttributeNS(null, "display", "block");}, 0);
});