2010-08-19 49 views
5

與「CONTENTEDITABLE」標誌元素時,我粘貼在任何元素文本「CONTENTEDITABLE」啓用標誌,IE會自動查找鏈接或電子郵件地址,並用其替換禁用自動URL檢測在IE

<a href="hyperlink">hyperlink</a>. 

我如何禁用IE瀏覽器中的'contentEditable'標誌的元素(例如div,span等)的自動URL檢測或aleast獲取粘貼在div中的實際文本。

最好的問候,
凱沙夫

回答

1

我不認爲你可以。您需要捕獲paste事件並設置一個簡短的計時器,該計時器調用一個可刪除鏈接的函數。

編輯2012年9月30日

IE 9和上述具有切換這一關的能力。見Maxon的答案。

3

不幸的是,沒有跨版本的解決方案。 在IE9有機會,允許禁用自動超鏈接:

document.execCommand("AutoUrlDetect", false, false); 

更多信息:http://msdn.microsoft.comhttp://bytes.com

+2

這似乎不適用於IE11 – jreptak 2013-11-11 19:04:34

+0

已確認無法在IE11中正常工作 – Artif3x 2016-12-15 21:16:37

0

我用的preventDefault上空格鍵,回車鍵,tab鍵的keydown事件來防止URL檢測。測試IE11和Chrome。

document.getElementById("input").addEventListener("keydown", function (e) { 
    var SPACEKEY = 32; 
    var ENTERKEY = 13; 
    var TABKEY = 9; 

    var whiteSpace = ""; 

    if (e.keyCode == SPACEKEY || e.keyCode == ENTERKEY || e.keyCode == TABKEY) { 
    e.preventDefault(); 

    if (e.keyCode == SPACEKEY) { 
     whiteSpace = " "; 
    } else if (e.keyCode == ENTERKEY) { 
     whiteSpace = "\n"; 
    } else if (e.keyCode == TABKEY) { 
     whiteSpace = "\t"; 
    } 

    var selection = document.getSelection(); 
    var start = selection.anchorOffset > selection.focusOffset ? selection.focusOffset : selection.anchorOffset; 
    var end = selection.anchorOffset > selection.focusOffset ? selection.anchorOffset : selection.focusOffset; 

    $(this).text($(this).text().substring(0, start) 
     + " " 
     + $(this).text().substring(end)); 
    var range = document.createRange(); 
    range.setStart($(this)[0].firstChild, start + 1); 
    range.setEnd($(this)[0].firstChild, start + 1); 
    selection.removeAllRanges(); 
    selection.addRange(range); 
    } 
    return false; 
});