2013-11-20 3 views
1

Я установил параметр enableTextSelectionOnCells в true, чтобы выбрать текст в slickgrid, но я могу выбирать только текст в IE и хром, но не в firefox. Я знаю, что это ошибка в slickgrid, и она была исправлена ​​в slickgrid 2.2, но я использую slickgrid V2.1 и не хочу обновляться до V2.2. Есть ли способ, чтобы выбрать текст в Firefox с помощью slickgrid 2.1Выбор текста в slickgrid

+0

ну на самом деле я не нахожу его доказательством в 2.2, даже если я обновляюсь до последней версии, теперь он все еще не полностью работает. Это не работает, если я делаю двойной щелчок по тексту, а выбор текста не всегда работает. – ghiscoding

ответ

3

Я была такая же проблема, как у вас есть, и я, наконец, нашел решение из запроса тягового сделанного пользователя icoxfog417 (спасибо мата), тянуть запрос еще не одобрен (надеюсь, скоро), но я попробовал его, и он работает на всех трех браузерах, которые я пробовал (в моем случае FF27, IE8, Chrome31). Вы должны изменить 1 из основного файла slick.grid.js но это стоит :)
запрос тянуть это один: Pull Request #746: fix issue#739

Изменение кода проста и выглядит следующим образом:
Измените файл slick.grid.js в строке 2236, замените код с этим:

// if this click resulted in some cell child node getting focus, 
// don't steal it back - keyboard events will still bubble up 
// IE9+ seems to default DIVs to tabIndex=0 instead of -1, so check for cell clicks directly. 
if (e.target != document.activeElement || $(e.target).hasClass("slick-cell")) { 
    var selection = getTextSelection(); //store text-selection and restore it after 
    setFocus(); 
    setTextSelection(selection); 
} 

затем вставить в строке 2418 (после функции setFocus()), вставьте этот новый код:

//This get/set methods are used for keeping text-selection. These don't consider IE because they don't loose text-selection. 
function getTextSelection(){ 
    var textSelection = null; 
    if (window.getSelection) { 
    var selection = window.getSelection(); 
    if (selection.rangeCount > 0) { 
     textSelection = selection.getRangeAt(0); 
    } 
    } 
    return textSelection; 
} 

function setTextSelection(selection){ 
    if (window.getSelection && selection) { 
    var target = window.getSelection(); 
    target.removeAllRanges(); 
    target.addRange(selection); 
    } 
} 

Voilà !!! Очень рад об этом :)

Смежные вопросы