2013-09-06 2 views
2

Я пытаюсь создать Shift + Click действия в силовую направленной макете со следующим кодом применяется к узлу формы:d3.event.shiftKey вызывая аварии с Force-ориентированном Layout

.on("click",function(){ 
     if(d3.event.shiftKey){ 
       //do something 
     } 
}); 

Код имеет тенденцию функционировать правильно, но иногда может привести к краху браузера (как к Chrome, так и к сбою Safari). Кажется, что происходит сбой после следующей последовательности:

  • Нажмите и перетащите курсор в любом месте за пределами узла (так что текстовый курсор раскрывается)
  • Удерживая сдвиг, удерживая курсор за пределы узла (по-прежнему показывает текст курсор)
  • Нажмите узел

обновления: Похоже, что этот крах не только для моего кода. Я могу разбивать свои браузеры на любом силовом макете, выполняя следующие действия: сохраняя сдвиг в нажатом состоянии все время, нажмите пустое место, щелкните узел.

Возможно, некоторые встроенные функции сдвига мешают D3? Например, ключ alt отлично работает с моим кодом.

Спасибо!

+0

Не могли бы вы опубликовать скрипку или bl.ocks? –

+0

Это звучит как ошибка для меня. Вы проверили соответствующие трекеры ошибок? –

+0

Из этой существующей скрипки (http://jsfiddle.net/zuzzy/dFd3H/2/) я обнаружил, что проблема не является исключительной для моего события Shift + Click - похоже, это происходит со всеми макетами с принудительной ориентацией. Удерживайте сдвиг в течение следующего: нажмите пустое место, щелкните узел - сбой браузера. – interpolack

ответ

1

Мы столкнулись с подобной ситуацией, и это, кажется, Chrome ошибка: https://bugs.webkit.org/show_bug.cgi?id=114745

Ее возможно, что по умолчанию в WebKit, где сдвиг-щелчок выделяет весь текст до текущей позиции курсора является механизмом для авария.

Мы еще не потратили время на отслеживание специфики еще в d3, но, как сообщается в отчете об ошибке, возможно, теперь можно обойти его с помощью размытия на каких-либо ранее сфокусированных элементах (см. Отчет об ошибке) ,