Ответ 1
Резюме:
В IE есть ошибка которая приводит к неправильному отображению путей с маркерами. Исходный код с удаленными маркерами без проблем.
Существует три решения:
- Не используйте маркеры
- Вставить маркеры в путь следующим образом: http://jsfiddle.net/niaconis/3YsWY/9/
- Подождите, пока Microsoft исправит эту ошибку.
Вариант 2, хотя и немного уродлив, вероятно, наиболее жизнеспособен.
Оригинальное сообщение:
К сожалению, я нашел ответ Джеймса только для статического svg.
Я вытащил css и javascript из оригинального примера и поместил их в jsfiddle. Ссылки отображались правильно в Chrome 26 (это был мой тип контрольного теста), но не отображались вообще в IE 10 (как и ожидалось). Затем я редактировал javascript, который касался создания ссылок в соответствии с ответом, который Джеймс дал:
var path = svg.append("svg:g")
.attr("fill", function(d) { return "none"; }) /*new*/
.attr("stroke-width", function(d) { return "1.5px"; }) /*new*/
.attr("stroke", function(d) { return "#666"; }) /*new*/
.selectAll("path")
.data(force.links())
.enter().append("svg:path")
.attr("class", function(d) { return "link " + d.type; })
.attr("marker-end", function(d) { return "url(#" + d.type + ")"; });
Это добавило указанные атрибуты в элемент <g>
, но не повлияло на отображение "живого" графика. (Проверяя сейчас, я заметил, что "статический" график отображает ссылки в IE10 даже без этих атрибутов, как показано здесь.)
Я смог сделать ссылки видимыми в IE10 (даже прямо в исходный пример) с помощью панели инструментов разработчика IE. Я нашел один из тегов <path>
в DOM, а затем на вкладке "Стиль" справа снял флажок и перепроверял стиль "путь .link".
Это получает ссылки для показа, но любое последующее взаимодействие с графом отключает маркеры от концов ссылок. Они просто остаются на месте, и я не нашел ничего, что заставит их снова подключиться.
Единственный источник информации, который я могу найти, кажется актуальным, - это сообщение SO: Элемент не отображается в IE7, пока я не отредактирую его через панель инструментов разработчика
Тем не менее, я довольно новичок в svg, поэтому у меня нет ни малейшего представления о том, как перенести исправление, описанное там, в svg (это исправление было для элемента html)
Может быть, это поможет кому-то попасть в правильном направлении?
P.S. Я знаю, что это не совсем ответ, и я бы просто написал это как ответ на ответ Джеймса, но, похоже, у меня нет достаточной репутации для этого. =\
Update:
Как выясняется, эта проблема полностью связана с маркерами. Эта скрипта является исходным кодом, но с удалением маркеров, и ссылки отображаются просто отлично. Проблема с маркером была задокументирована до и является серьезной ошибкой IE10. Почему это также приводит к исчезновению ссылок, я не знаю.
Эта скрипта предлагает обход. Это не самое чистое решение, поскольку я закодировал каждый маркер непосредственно по его пути ссылки, но он работает.
Если кто-нибудь может найти работу для самой проблемы с маркером, это будет лучше, и это должно быть дополнительно опубликовано как ответ на вопрос другого маркера.
(Также обратите внимание: мое решение делает пунктирные ссылки ужасными, поэтому я сделал их светло-голубыми.)
Об этой ошибке сообщается Microsoft, но до сих пор они, похоже, отклонили или проигнорировали ее. Перейдите в этот пост на веб-сайте отслеживания проблем Microsoft и нажмите ссылку, указывающую, что вы можете воспроизвести эту ошибку. Может быть, мы можем привлечь их внимание?