web-dev-qa-db-ja.com

InternetExplorerにイベントリスナーを貼り付けて間違った引数を取得する

contenteditableの貼り付けイベントを処理して、貼り付け前にすべてのHTMLマーカーをクリーンアップします。 FirefoxChromeではすべて正常に機能します。しかし、コードをIE11でテストすると、渡されたevent objectClipboardEventではなくDragEventです。

私のコードに何か問題がありますか?以下のコードとしてリスナーを追加した場合、クリップボードイベントを取得する必要があります。なぜドラッグが発生するのですか?

editable.addEventListener('paste', pasteHandler, false);

http://jsfiddle.net/vepo/4t2ofv8n/

上記の例をテストするために、ChromeからテキストをコピーしてIEに貼り付けます。しかし、IEからテキストをコピーすると、同じエラーが発生します。

14
Victor

[〜#〜]編集[〜#〜]

$(document).ready(function(){
    var editable = document.getElementById('editable-div');
    var pasteHandler = function(e){
        if(e.clipboardData && e.clipboardData.getData) {
            var pastedText = "";
            if (window.clipboardData && window.clipboardData.getData) { // IE
                pastedText = window.clipboardData.getData('Text');
            } else if (e.clipboardData && e.clipboardData.getData) {
                pastedText = e.clipboardData.getData('text/plain');
            }

            alert(pastedText);
        }
        else{
            alert('Not paste object!');
        }
    };
    editable.addEventListener('paste', pasteHandler, false);
});

ここでは、IEバージョンと他のブラウザも処理します。

JSFiddle

14
william.eyidi

e.clipboardData IEでは常にnullだったので、これを思いつきました。

var pastedText = '';
if (typeof e.clipboardData === 'undefined')
    pastedText = window.clipboardData.getData('Text')
else
    pastedText = e.clipboardData.getData('text/plain')
10
codeMonkey

e.originalEvent.clipboardData.getData('text/plain')は、Safari、chrome、firefox、safariで機能し、Ipadではchrome.

window.clipboardData.getData('text')はInternetExplorerとEdgeで機能します。

注:e.originalEvent.clipboardData.getData('text')はデスクトップブラウザでは機能しますが、モバイルブラウザでは機能しません。

だから結局私はこれを使いました

var clipText;
  if (e.originalEvent.clipboardData !== undefined){
    clipText = e.originalEvent.clipboardData.getData('text/plain')
  } else {
    clipText = window.clipboardData.getData('text')
  }
3
PetrolHead
$("element").on('paste', function (e)
{
if (window.clipboardData) 
{
pastedText = window.clipboardData.getData('Text')
}
else if (e.clipboardData || e.originalEvent.clipboardData != undefined)
{
pastedText = e.originalEvent.clipboardData.getData('text/plain')
}
}
});
0
sherin