Modify

Opened 22 months ago

Closed 19 months ago

Last modified 2 months ago

#10688 closed defect (fixed)

TypeError: a.curCSS is not a function (Trac 1.1.1dev-r11469)

Reported by: rjollos Owned by: rjollos
Priority: normal Component: AdminEnumListPlugin
Severity: normal Keywords:
Cc: nonplus, jun66j5 Trac Release: 1.2

Description (last modified by rjollos)

The following errors are seen with Trac 1.1.1dev-r11469:

Firefox 16:

[10:46:52.715] TypeError: a.curCSS is not a function @ http://localhost:8000/tracdev/chrome/common/js/jquery-ui.js:5

Chrome 23:

Uncaught TypeError: Object function (a,b){return new p.fn.init(a,b,c)} has no method 'curCSS'

Trac 1.0 has:

  • jQuery 1.7.2
  • jQuery UI 1.8.21

Trac 1.1.1dev has:

There is an incompatibility between jQuery 1.8 and jQuery UI < 1.8.22, as described here. I'll open a ticket for this in the Trac core, and implement a workaround in the plugin code.

Attachments (0)

Change History (12)

comment:1 Changed 22 months ago by rjollos

  • Status changed from new to assigned

I've filed a ticket in Trac for the jQuery/jQuery UI compatibility issue in t:#10976.

comment:2 Changed 22 months ago by rjollos

  • Description modified (diff)

comment:3 Changed 22 months ago by rjollos

(In [12417]) Refs #10688: Implemented workaround for "curCSS is not a function" error when using jQuery UI < 1.8.22 with jQuery 1.8.x.

comment:4 Changed 22 months ago by jun66j5

After r12417, the following error happens with Trac 0.11.7.

Timestamp: 2012-12-09 20:51:02
Error: too much recursion
Source File: http://localhost:3000/chrome/common/js/jquery.js
Line: 11

Applying the following patch, it works on Trac 0.11.7, 0.12.4, 1.0 and trunk (t:r11479).

  • adminenumlistplugin/htdocs/adminenumlist.js

     
    1414    // Trac 1.1.1dev @r11479 provides jQuery UI 1.8.21 and jQuery 1.8.2 
    1515    // http://bugs.jquery.com/ticket/11921 
    1616    if(!$.isFunction($.fn.curCSS)) 
    17         $.curCSS = $.css; 
     17        $.fn.curCSS = $.fn.css; 
    1818     
    1919    var mouseY, lastY = 0; 
    2020     

comment:5 Changed 22 months ago by rjollos

Thanks, I'll apply that fix. That is interesting though. It must be an issue with an older version of jQuery then? The line in my patch was copied from the jQuery UI patch.

comment:6 Changed 22 months ago by rjollos

In Chrome 23 and the latest Trac trunk, I'm still seeing an error in the JS console after applying the patch:

Uncaught TypeError: Object function (a,b){return new p.fn.init(a,b,c)} has no method 'curCSS' 

The plugin seems to work fine though.

comment:7 Changed 22 months ago by rjollos

Maybe we have a different issue here though. In the jQuery ticket it was noted that curCSS has been deprecated since jQuery 1.3 and was removed in 1.8. With Trac 0.11.7 we are working with jQuery 1.2.6. The conditional was intended to evaluate to false for jQuery < 1.8, since curCSS should still be available (though deprecated).

comment:8 Changed 22 months ago by jun66j5

Oh, sorry. I mistook. I rework..., the fix needs checking existence of $.curCSS instead of $.fn.curCSS.

$.cssCSS $.fn.curCSS notes
0.11.7 function undefined jQuery 1.2.6
0.12.4 function undefined jQuery 1.4.4
1.0 function undefined jQuery 1.7.2
trunk undefined undefined jQuery 1.8.2
  • adminenumlistplugin/htdocs/adminenumlist.js

     
    1313    // Workaround for issue when using jQuery UI < 1.8.22 with jQuery 1.8 
    1414    // Trac 1.1.1dev @r11479 provides jQuery UI 1.8.21 and jQuery 1.8.2 
    1515    // http://bugs.jquery.com/ticket/11921 
    16     if(!$.isFunction($.fn.curCSS)) 
     16    if(!$.isFunction($.curCSS)) 
    1717        $.curCSS = $.css; 
    1818     
    1919    var mouseY, lastY = 0; 

comment:9 Changed 22 months ago by rjollos

Thanks, that works for me too. I can extend your list as follows:

$.curCSS $.fn.curCSS notes
0.11.0 function undefined jQuery 1.2.3

comment:10 Changed 22 months ago by rjollos

(In [12423]) Refs #10688: Fixed check for existence of curCSS function. Thanks to Jun Omae for the fix.

comment:11 Changed 21 months ago by rjollos

In [12463] I had to check for $.fn.prop; checking for $.prop didn't seem to work. The only difference I see between these two cases is the possibility that jQuery might treat a function alias differently than a function.

comment:12 Changed 19 months ago by rjollos

  • Resolution set to fixed
  • Status changed from assigned to closed

Add Comment

Modify Ticket

Action
as closed .
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.