Skip to main content

Bug Tracker

Side navigation

#1755 closed bug (invalid)

Opened September 30, 2007 04:29AM UTC

Closed January 18, 2009 04:08AM UTC

Last modified March 15, 2012 12:10AM UTC

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:
Blocked by: Blocking:
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 (1)
Change History (3)

Changed October 30, 2007 04:59PM UTC by james_taylor comment:1

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);
                                }
                        }
                }

Changed November 14, 2007 12:44AM UTC by eric comment:2

I'll confirm. This fix works for me.

Changed January 18, 2009 04:08AM UTC by dmethvin comment:3

resolution: → invalid
status: newclosed

If this bug is still present, please file a ticket on the UI tracker:

http://ui.jquery.com/bugs/