2013-11-20 113 views
1

我已經將'enableTextSelectionOnCells'選項設置爲true來選擇slickgrid中的文本,但我只能選擇IE和chrome中的文本,而不是Firefox中的文本。我知道這是slickgrid中的bug,它已在slickgrid 2.2中修復,但我使用的是slickgrid V2.1,不想升級到V2.2。有沒有辦法使用slickgrid 2.1slickgrid中的文本選擇

+0

實際上,我沒有在2.2中找到它的防彈措施,即使我剛剛更新到最新版本,它仍然沒有完全正常工作。如果我雙擊文本和文本選擇不總是工作,它不起作用。 – ghiscoding

回答

3

我有同樣的問題,因爲你已經和我終於找到了從用戶icoxfog417(感謝隊友)做了一個拉請求的解決方案,拉選擇在Firefox文本請求尚未批准(希望很快),但我試過了,它適用於我嘗試的所有3種瀏覽器(在我的情況下是FF27,IE8,Chrome31)。你必須修改核心文件slick.grid.js 1,但它是值得的:)
拉入請求是這個:Pull Request #746: fix issue#739

更改代碼很簡單,看起來像這樣:
在行2236修改文件slick.grid.js,更換與此的代碼:

// 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(在0​​功能之後),插入此新的代碼:

//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à!非常高興:)