http://www.mediawiki.org/wiki/Special:Code/MediaWiki/83587
Revision: 83587 Author: catrope Date: 2011-03-09 14:27:13 +0000 (Wed, 09 Mar 2011) Log Message: ----------- Fix r83586 (drag and drop support for placeholder plugin) to work in IE, whose drag&drop API is surprisingly similar to Firefox's but with slight differences Modified Paths: -------------- trunk/phase3/resources/jquery/jquery.placeholder.js Modified: trunk/phase3/resources/jquery/jquery.placeholder.js =================================================================== --- trunk/phase3/resources/jquery/jquery.placeholder.js 2011-03-09 13:54:02 UTC (rev 83586) +++ trunk/phase3/resources/jquery/jquery.placeholder.js 2011-03-09 14:27:13 UTC (rev 83587) @@ -41,9 +41,26 @@ // already focused when the events were bound .bind( 'focus drop keydown paste', function( e ) { if ( $input.hasClass( 'placeholder' ) ) { - // Support for drag&drop in Firefox if ( e.type == 'drop' && e.originalEvent.dataTransfer ) { - this.value = e.originalEvent.dataTransfer.getData( 'text/plain' ); + // Support for drag&drop. Instead of inserting the dropped + // text somewhere in the middle of the placeholder string, + // we want to set the contents of the search box to the + // dropped text. + + // IE wants getData( 'text' ) but Firefox wants getData( 'text/plain' ) + // Firefox fails gracefully with an empty string, IE barfs with an error + try { + // Try the Firefox way + this.value = e.originalEvent.dataTransfer.getData( 'text/plain' ); + } catch ( exception ) { + // Got an exception, so use the IE way + this.value = e.originalEvent.dataTransfer.getData( 'text' ); + } + + // On Firefox, drop fires after the dropped text has been inserted, + // but on IE it fires before. If we don't prevent the default action, + // IE will insert the dropped text twice. + e.preventDefault(); } else { this.value = ''; } _______________________________________________ MediaWiki-CVS mailing list MediaWiki-CVS@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs