5

Ich ziehe Bilder von einem anderen Browser Tab in den Tab für meine Webseite ziehen und ablegen. Meine Event-Handler für das Ereignis "drop" funktionieren in jedem anderen Desktop-Browser mit Ausnahme von Internet Explorer 11.Javascript/JQuery Drop-Ereignis nicht in Internet Explorer IE 11

IE navigiert nur zur URL des Bildes, das ich gelöscht habe, statt das Ereignis "drop" auszulösen und meinen JS zuzulassen Code tun, was er will (wie in Chrome, Firefox, Opera und Safari, auf Windows 7). Code ist unten. Beachten Sie, dass keine der im Code aufgeführten Warnungen ausgelöst werden.

Ich folgte auch die Beratung hier auf dem Microsoft-Seite gegeben: https://msdn.microsoft.com/en-us/library/ms536929(v=vs.85).aspx in Bezug auf die Standard-Aktion von „dragenter-“ Cancelling und (Anmerkung „window.event.returnValue=false in beide ondragenter und ondragover Ereignishandler Angabe“: anderer Browser mich nicht verlangen, habe einen dragenter Event-Handler)

$(window).on("dragenter", function(event) { 
    alert('drag enter'); 
    event.returnValue = false; 
    event.preventDefault(); 
    event.stopPropagation(); 
}); 

$(window).on("dragover", function(event) { 
    alert('drag over'); 
    event.returnValue = false; 
    event.preventDefault(); 
    event.stopPropagation(); 
}); 

$(window).on("dragleave", function(event) { 
    alert('drag leave'); 
    event.preventDefault(); 
    event.stopPropagation(); 
}); 

$(window).on("drop", function(event) { 
    alert('drop'); 
    event.preventDefault(); 
    event.stopPropagation(); 
    var imageSrc = $(event.originalEvent.dataTransfer.getData('text/html')) 
      .filter(function(i, elm){return $(elm).is('img');}).attr('src'); 

// Now do something with the imageSrc URL: 

}); 

Vielen Dank für Anregungen!

Antwort

1
It is working fine in IE Browser Version:11.0.40 for jQuery 2.2.4 version. 
Please check your jQuery version  

Note: for me event has been fired for two times when dragging image from desktop to IE 11 browser. 

finden Sie Demo Link.

+0

@Alex Kerr: Bitte teilen Sie Ihre jQuery Version & IE Browser Version, die Sie verwenden. – Thulasiram

+0

Er sagte _ "Drag & Drop Bilder von einem anderen Browser Tab in den Tab für meine Webseite" _ – user10089632

1

Edit: Interessante, was ich here (S.O question/answer) bekam, der Typ hatte ein ähnliches Problem Schleppen zwischen zwei Internet Explorer 11 unter Windows auf der gleichen Domäne. Also noch ein Grund, wenn sie aus verschiedenen Bereichen stammen. Er zitiert:

bisher habe ich verstanden, dass dies auf Windows 10 MS-Browser mit mindestens 1607 als Version arbeitet


Erstens ist dies keineswegs beabsichtigt, eine Antwort auf seine auf diese Frage, es dient lediglich als eine Gruppe von Punkten, die eine endgültige Antwort auf dieses rätselhafte Problem

Zwei Fälle Szenario helfen bauen können

  1. Auf der gleichen Domäne

    getestet, wenn beide Seiten auf localhost sind, Diese Ereignisse hat normalerweise gefeuert: Sie getData('text/html')-getData('text') sich ändern müssen, weil IE support only fest, dass 'URL' oder files so müssen Sie setData() eingestellt von die ursprüngliche Seite entsprechend
    (Im Allgemeinen, wenn das gezogene Markup ein Bild ohne Links ist, ist die getData('text') gibt Ihnen das Attribut src des Bildes)

  2. auf verschiedene Domains

    Hier ist der Teil, wo dies nicht viel von einer Antwort ist, haben die folgenden Punkte versucht worden und werden hier gegeben, um erneut getestet, gezwickt oder erweitert werden, um eine Lösung zu finden. Als letzten Gedanken, den ich hier an erster Stelle stelle: Vielleicht ist das nicht möglich, denn wie Sie vielleicht bereits wissen, kann Drag & Drop inline Skripte enthalten, die das Ziel anfällig für XSS-Angriffe machen. Es ist nicht sehr unwahrscheinlich, dass Hacker versucht haben, es möglich zu machen (ungefähr so, wie ich es richtig mache) und jedes Mal, wenn Microsoft dem entgegenwirkt.

    • Als das ursprüngliche Plakat die Verwendung von returnValue=false ist sinnlos hingewiesen. Ich habe es auf dem ursprünglichen Ereignis event.originalEvent und mit event als Ereignis window und als handler Parameter versucht.

    • Sie mögen denken, da ich erwähnt Domain haben, dass dies eine Cross-Domain-Problem (sehr legitim) hier ist das, was ich in PHP versucht haben:

    header("Access-Control-Allow-Origin: *");

    • Nach IE war bekannt für XSS-Angriffe anfällig gewesen, möglicherweise hat es drastische Maßnahmen dagegen in IE 11, so dass zurück zu einer früheren Version das Verhalten davon, IE9 zum Beispiel:

    header('X-UA-Compatible: IE=EmulateIE9');
    header('X-UA-Compatible: IE=9');

NB Der folgende Punkt ist nicht beabsichtigt, eine tragfähige Lösung zu sein (zumindest nicht aus der Sicht des Entwicklers) es ist ein Versuch, verengen die Möglichkeiten des Ursprungs des Problems nach unten

  • möglicherweise möchten Sie Internet Explorer, um zu versuchen:

    internet options>Custom level...-->miscellaneous--> under the lable 'allow the dragging of content between separate windows' --> check enable

Oder Internet Explorer security zones registry entries for advanced users oder dieses reference

Hinweis mit, dass für die Zwecke der Prüfung Sie Cross-Domain-Ziehen zwischen IE und FF/Chrome hin und her mit DataTransfert verhalten in etwa wie zwischen zwei IEs auf demselben machen können Domain.

Verwandte Themen