Side navigation
#4365 closed bug (invalid)
Opened March 17, 2009 05:14PM UTC
Closed December 02, 2010 08:07AM UTC
Last modified March 26, 2012 09:54PM UTC
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)
Change History (10)
Changed April 28, 2009 04:30PM UTC by comment:1
Changed May 14, 2009 05:25PM UTC by comment:2
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 October 14, 2009 03:31AM UTC by comment:3
component: | unfilled → core |
---|---|
summary: | unable to use jQuery.noConflict() and firefox 2 → prototype's getElementsByClassName causes jQuery error |
Changed October 29, 2010 05:06AM UTC by comment:5
owner: | → mcologne |
---|---|
priority: | major → low |
status: | new → pending |
Anyone still having issues with noConflict?
Changed December 02, 2010 08:07AM UTC by comment:8
resolution: | → invalid |
---|---|
status: | pending → closed |
Automatically closed due to 14 days of inactivity.
Changed March 26, 2012 09:52PM UTC by comment:9
this is still a current issue, reopen please.
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?