2017-01-20 11 views
0

Я пытаюсь:D3: выбор <g> в SVG не работает в Safari

  1. Load внешний SVG
  2. Выберите группы в том SVG, чтобы сделать что-то

Это фрагмент кода:

d3.xml("/img/Cell.svg").mimeType("image/svg+xml") 
    .get(function (error, documentFragment) { 

    if (error) throw error; 

    var svgNode = documentFragment.getElementsByTagName("svg")[0]; 
    document.body.appendChild(svgNode); 

    d3.select("g#ID_of_G"); // returns an empty selection in Safari, works in Chrome and Firefox 
    ... 
}); 

Я также попытался изменить выбор на d3.select("svg").select("g#ID_of_G") но это ничего не изменило.

+0

воспринимайте это как ошибка webkit для их bugtracker возможно –

+0

Для тех, кто хочет воспроизвести проблему, вот [Plunker] (http://plnkr.co/edit/lkP4gmvGQRKzW7s6KdOC?p=preview), к сожалению, у меня нет собственного Mac, поэтому я могу больше не помогайте ... – Mark

+1

Этот код работает для меня в safari v10.0.2. Какую версию ты используешь? –

ответ

0

Ничего себе, хорошо, я нашел проблему:

Safari имеет проблему, если г-элементы имеют идентификаторы, которые имеют заглавную букву в них. Таким образом, я должен был изменить идентификатор г-элемента из ID_of_G в id_of_g и выбрать его с помощью:

d3.select("g#id_of_g");

Это сообщение об ошибке помог мне найти решение: https://bugs.webkit.org/show_bug.cgi?id=83438