Bug Tracker

Opened 14 years ago

Closed 13 years ago

Last modified 11 years ago

#4365 closed bug (invalid)

prototype's getElementsByClassName causes jQuery error

Reported by: mcologne Owned by: mcologne
Priority: low Milestone: 1.3.2
Component: core Version: 1.3.2
Keywords: Cc:
Blocked by: Blocking:

Description

hi,

i have problems using jQuery.noConflict() and firefox 2.

my firefox version: pc firefox 2.0.0.20 the same with mac firefox 2.0.0.4

i'm using only the first example from http://docs.jquery.com/Using_jQuery_with_Other_Libraries

it doesn't work, the following errors occur in firebug:

Security error" code: "1000 jQuery(document).ready is not a function

what shall i do? anybody an idea if this is a bug?

best regards m

code i use below

<!DOCTYPE html PUBLIC "-W3CDTD XHTML 1.0 TransitionalEN" "http:// www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Unbenanntes Dokument</title> <script src="http://www.prototypejs.org/javascripts/prototype.js"></ script>

<script src="../scripts/jquery/jquery-1.3.2.js"></script> <script>

jQuery.noConflict();

Use jQuery via jQuery(...) jQuery(document).ready(function(){

jQuery("div").hide();

});

Use Prototype with $(...), etc. $('someid').hide();

</script>

</head>

<body> </body> </html>

Attachments (1)

jquery-1.3.2.js (118.1 KB) - added by yc_hsu 14 years ago.
Inserted new code on line 2236 and 2256 to temporarily yield $ in case getElementsByClassName is overridden by Prototype which needs its own $.

Download all attachments as: .zip

Change History (11)

comment:1 Changed 14 years ago by rjbjq

I can replicate this issue. I merged 1.3.2 back to 1.3.1(which works fine) and the change that is causing this issue is around line 2231 of jquery-1.3.2.js. Specifically I think it is due to Firefox 2.0.0.20 crashing when div.getElementsByClassName() is called on line 2236. Perhaps this is due to getElementsByClassName() being overridden by prototype?

comment:2 Changed 14 years ago by crutchfield

I was able to get around this issue by adding a try/catch block around the offending code.

try {
if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
	var div = document.createElement("div");
	div.innerHTML = "<div class='test e'></div><div class='test'></div>";

	// Opera can't find a second classname (in 9.6)
	if ( div.getElementsByClassName("e").length === 0 )
		return;

	// Safari caches class attributes, doesn't catch changes (in 3.2)
	div.lastChild.className = "e";

	if ( div.getElementsByClassName("e").length === 1 )
		return;

	Expr.order.splice(1, 0, "CLASS");
	Expr.find.CLASS = function(match, context, isXML) {
		if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
			return context.getElementsByClassName(match[1]);
		}
	};
})();
} catch(e) {
	// If using prototype + FF2.0 this block will fail, catching the exeception and moving on
	// as FF2.0 shouldn't natively have getElementsByClassName defined
}

Changed 14 years ago by yc_hsu

Attachment: jquery-1.3.2.js added

Inserted new code on line 2236 and 2256 to temporarily yield $ in case getElementsByClassName is overridden by Prototype which needs its own $.

comment:4 Changed 14 years ago by dmethvin

Component: unfilledcore
Summary: unable to use jQuery.noConflict() and firefox 2prototype's getElementsByClassName causes jQuery error

comment:5 Changed 13 years ago by addyosmani

#5027 is a duplicate of this ticket.

comment:6 Changed 13 years ago by SlexAxton

Owner: set to mcologne
Priority: majorlow
Status: newpending

Anyone still having issues with noConflict?

comment:7 Changed 13 years ago by Rick Waldron

#7426 is a duplicate of this ticket.

comment:8 Changed 13 years ago by Rick Waldron

#5284 is a duplicate of this ticket.

comment:9 Changed 13 years ago by trac-o-bot

Resolution: invalid
Status: pendingclosed

Automatically closed due to 14 days of inactivity.

comment:10 Changed 11 years ago by anonymous

this is still a current issue, reopen please.

Note: See TracTickets for help on using tickets.