Ticket #1755 (closed bug: invalid)
jQuery UI problem with drag and drop on Safari
| Reported by: | marklacas | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | 1.2.2 |
| Component: | plugin | Version: | 1.2.1 |
| Keywords: | ui safari | Cc: | |
| Blocking: | Blocked by: |
Description
The code below works when I comment out or remove the activeClass and hoverClass options in droppable. When they are not commented out Safari doesn't do the drag (or drop) and spits out javascript errors in droppable.ext.js
$("#drop-box").addClass("droppable-active").droppable({
accept: ".activeClass", tolerance: "pointer", activeClass: "activecolor", hoverClass: "droppable-hover", drop: function( ev, ui ) {
$(this).append( $(document.createElement("div") ).text( $(ui.draggable.element).text() ));
}
});
$(".dragger").addClass("draggable").draggable({
helper: "clone"
});
Attachments
Change History
Changed 5 years ago by ebartels
-
attachment
safari_reserved_word_1755.diff
added
Fix use of reserved word in Safari2
Please follow the bug reporting guidlines and use jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.

Seems to be a problem with how plugins are called (different errors happen depending on what plugins you are using), 'arguments' is a reserved word and Safari 2 doesn't let you rebind it as a local in the function (later WebKit builds don't seem to have a problem). The following fixes it for me:
Index: ui.mouse.js =================================================================== --- ui.mouse.js (revision 3751) +++ ui.mouse.js (working copy) @@ -10,13 +10,13 @@ var a = $.ui[w].prototype; if(!a.plugins[c]) a.plugins[c] = []; a.plugins[c].push([o,p]); }, - call: function(instance, name, arguments) { + call: function(instance, name, args) { var c = instance.plugins[name]; if(!c) return; var o = instance.interaction ? instance.interaction.options : instance.options; var e = instance.interaction ? instance.interaction.element : instance.element; for (var i = 0; i < c.length; i++) { - if (o[c[i][0]]) c[i][1].apply(e, arguments); + if (o[c[i][0]]) c[i][1].apply(e, args); } } }