Its works fine in IE, i was testing in Chrome v 28 since few days. In IE file gets uploaded fine. (tested multiple file uploads). So to make it work in Chrome i had to make few changes. Mistakes made.In chromeWhile debugging client-side i found thatvar xhr = XMLHttpRequest throws an error, ' dom object constructor cannot be called as a function'So replaced it withvar xhr=new XMLHttpRequest; and removed xhr.setRequestHeader('Content-type', 'multipart/form-data'); (Not sure why but xhr.send results in ispostback value to be false?? ).Comments are appreciated.Link to full code.
This event is triggered once the draggable has been released and the drop area agrees to accept the drop. This will only fire if the draggable element and the drop area have correct dropEffect and effectAllowed values.
On drop you will need to collect the information using the getData method. Drag and Drop API MethodsThe object is the main item we will interact with when dealing with the native drag and drop API. It is exposed to us as part of the callback function for the events and gives us several functions to play with.This method sets the data that will be collected from the draggable by calling the method. You will need to pass in the type of data being saved and the data itself. This must be set in the dragstart event or it will fail. Its values can only be collected later during the drop event.The type argument should be an.
You can use many different types such as text/html or text/uri-list if you are using Chrome, Safari, or Firefox. If you are using Internet Explorer you must set it as Text or URL (in exactly that way or it will cause an error).The data argument is the data you want to save.
You can save a URL, a chunk of HTML, or any other piece of data. You can set only one piece of data per type. For example if you set text/html to be some HTML, you can’t then call the setData method again with new information as it will replace the old content.This is the counterpart to the setData method and it’s used to collect data set by the dragged element during the startdrag event.
You collect your data by calling event.dataTransfer.getData(type), specifying the type of data to be collected.You will most likely have to check what types are set using event.dataTransfer.types to see what formats have been passed. If you try and access data types that have not been set, Internet Explorer will throw an error.This method can be used only inside the drop event as only at that point does the API expose the values so you can collect them (this is to protect the data during transmission).This does exactly what its name implies, it clears any data set using setData and it’s written in the format: event.dataTransfer.clearData(type). You will need to specify the type of data that is being cleared (e.g. Text/html or URL). This method can only be used inside the dragstart event.This method sets the drag image to be displayed when dragging starts using the format:. By default, when dragging, the user will see a semi-transparent image of what they are dragging.
Using this method you can define your own image or element to appear during the drag. This works in all browsers except Internet Explorer.
Drag and Drop API Properties. We use our event variable that’s passed to us from the event callback to set these properties.This is specified on the draggable item. This tells the API about the drag event and what icons will be used for the cursor (this is OS and browser dependent).
It’s called by assigning a value to inside the dragstart event and takes the possible values of copy, move, link, copyLink, copyMove, linkMove, all, none, or uninitialized.If this value doesn’t match dropEffect it will prevent the drop event being called (ensures only appropriate drops happen). This property is specified on the drop zone and determines what drag items are allowed to drop on this zone. It should be assigned a value via event.dataTransfer.dropEffect during the dragenter or dragover events. DropEffect Takes the possible values of copy, link, move, or none.Just like effectAllowed, if this value doesn’t match effectAllowed it will prevent the drop event being called (ensures only appropriate drops happen).This property contains a list of all local files that have been set. It’s called using event.dataTransfer.files. Only called files have been dragged from the OS onto the website (e.g.
Images from your desktop to your website’s upload container). This property will always be empty if a regular on-site item has been dragged (e.g. If you drag an image, there will be no data set for files).It’s here that you can check to see if we have files. If we do have them we can read in and process the contents of the files using the.This property provides a list of all data types that have been set in the current drag. Called by using the event.dataTransfer.types method. This is useful during the dragenter and dragover events so that you can see what data types have been set. EffectAllowed and dropEffect in actionIf you’re keen on seeing how you can use these properties in a practical way, have a look at the following CodePen demo:See the Pen by SitePoint on.Here we define different draggable items and set where they can be dropped.
We also create several droppable zones and set which draggable types they will accept. Setting these properties correctly will ensure that your browser knows which draggable items are allowed to be dropped.Even though Internet Explorer supports both the effectAllowed and dropEffect properties, it doesn’t implement any native ability to allow only applicable drags into drop zones. Chrome, Safari, and Firefox will restrict your drag item and prevent incorrect drops, refusing to fire the drop event. On IE you will need to manually reject these drops yourself by comparing values as the drop event will still fire. Building Something with the Native APIThere’s quite a lot of information to deal with for the API so let’s put everything together into a practical example.The native API is concerned primarily with the interactions between the draggable and droppable elements and their transmission of data. The native API doesn’t care that you are moving two elements around trying to switch their positions, the API is more concerned with its data and it’s this focus that makes it unique.One of the best things about the native API is that it can handle different types of data and also data from multiple locations.Data types include.