2013-10-28 108 views
1

我有一些JavaScript,基本上聽取了特定輸入文本元素上的「粘貼」事件。我通過jQuery做了這個事件綁定。現在,在以前的IE版本中,事情效果很好。IE11將剪貼板數據粘貼到輸入元素煩惱

但升級到IE11後,行爲是不同的。

場景: 我正在複製和粘貼由CR和LF(電子表格中的多行)分隔的多個關鍵字。在JavaScript中,在「粘貼」事件處理程序中,我讀取剪貼板數據並將所有CR/LF字符轉換爲單個逗號,然後將此轉換後的數據字符串設置回剪貼板。再次,這在以前的IE版本中工作得很好。

IE11中的行爲如下: 粘貼時,「粘貼」事件處理程序確實被調用,並且我提到的所有事情都發生了。不幸的是,輸入元素中的粘貼結果仍然沒有正確格式化。隨後的粘貼會顯示正確的逗號分隔字符串(因爲我在處理程序中做的最後一件事是將轉換後的字符串設置爲剪貼板)。

問題: 我是否正確處理這個粘貼事件處理程序? 同樣,我正在處理粘貼事件,轉換剪貼板數據,然後將轉換的數據設置回剪貼板。在以前的IE版本中,這在第一次粘貼時有效。但在IE11中,轉換後的數據字符串將粘貼到第一個粘貼後的任何粘貼事件上。

下面是函數:

$("input").bind("paste", function (e) { 
     // for multi rows of spreadsheet data. 
     // format so that new line & carriage return are converted into a comma. 
     var rawText = window.clipboardData.getData("text"); 
     var delimitedText = rawText.replace(/\r\n/g, ', '); 
     window.clipboardData.setData("text", delimitedText); // this is why subsequent pasting works fine. 
}); 

十分讚賞。

回答

1

我解決了這個問題,從其他職位尋找類似的問題。 解決方法是使用setTimeout,超時時間爲100 ms。 設置這種方式使它像魅力一樣工作。