[OpenLayers-Users] OpenLayers 2.2 breaks with jQuery

Daniel Kastl daniel.kastl at gmx.de
Wed Nov 22 00:17:29 EST 2006


Thank you, Tim!
Now it's working again.

Daniel


Tim Schaub wrote:
> I think this is what is happening:
>
> 1) You load up jQuery, this defines the $ function 
> 2) You define JQ to be the same thing as $
> 3) You load OpenLayers, this checks if $ exists, and because it does exist,
> it is not redefined in the OL (prototype) way
> 4) You initialize your map and send it the string 'map' as the first
> argument
> 5) OpenLayers tries to place your map in the DOM element $('div'), but
> because $() is still a jQuery function that doesn't return a DOM element,
> you get the error about appendChild not being defined
>
> So (without knowing anything about jQuery), I think your problem would be
> solved if you did this in your second script tag:
>
> JQ = $;
> $ = null;
>
> This would let OpenLayers define $ in the way that it wants to (which it
> only does if $ == null), which would take your 'map' string and return a DOM
> element instead of whatever jQuery returns with $('map').
>
> Regardless of whether this works or not, it does bring up an OpenLayers
> issue.  The docs say that the map constructor takes a DOM element as the
> first argument.  In practice (and the way the function works), this is
> usually a string id for a DOM element instead.
>
> Tim
>
> (Alternatively, it seems like you should be able to load jQuery after
> OpenLayers - but it sounds like that didn't do the trick.)
>
>   
>> -----Original Message-----
>> From: users-bounces at openlayers.org 
>> [mailto:users-bounces at openlayers.org] On Behalf Of Daniel Kastl
>> Sent: Tuesday, November 21, 2006 9:17 PM
>> To: Daniel Kastl
>> Cc: users at openlayers.org
>> Subject: Re: [OpenLayers-Users] OpenLayers 2.2 breaks with jQuery
>>
>> Hi Brent,
>>
>> Sorry, but I missunderstood your answer.
>> I also tried your way and changed the order of OpenLayers and 
>> jQuery without renaming the $ to JQ, but it didn't help 
>> either. Usually the renaming of $ should be the more save 
>> way, I think.
>>
>> Daniel
>>
>>
>> Daniel Kastl wrote:
>>     
>>> Hi Brent,
>>>
>>> That's what I did, see:
>>>
>>>   <script type="text/javascript" 
>>> src="http://jquery.com/src/jquery-latest.pack.js
>>> <http://jquery.com/src/jquery-latest.pack.js>"></script>
>>>   <script type="text/javascript">
>>>     JQ = $;  // rename $ function to use jQuery together 
>>>       
>> with Prototype
>>     
>>>   </script>
>>>   <script type="text/javascript" 
>>> src="./2.2/lib/OpenLayers.js"></script>
>>>
>>> It was working as expected with 2.1, but with 2.2 it doesn't work 
>>> anymore. I didn't call any jQuery function, just included the lines 
>>> above and it gives an error. In the 2.2 release mail, there 
>>>       
>> was written:
>>     
>>>     * Refactoring the use of Prototype.js. Rather than using 
>>> Prototype.js, OpenLayers has integrated the important pieces of the 
>>> Prototype framework into OpenLayers, and removed offending 
>>>       
>> functions 
>>     
>>> like Object.extend(). This means that there should no longer be 
>>> conflicts between OpenLayers and different versions of 
>>>       
>> Prototype, or 
>>     
>>> any other Javascript framework.
>>>
>>> I guess, it's because of changes to the original Protoype library.
>>>
>>> Daniel
>>>
>>>
>>> Brent Pedersen wrote:
>>>   
>>>       
>>>> hi, i havent tried this, but i think you shouldnt have to alias 
>>>> jquery as JQ, just use jQuery (where you'd normally use $), and 
>>>> include it _after_ any prototype/OL stuff.
>>>> the jquery srcipt checks if $ exists, if so, it doesnt create that 
>>>> namespace.
>>>> -brent
>>>>
>>>>
>>>> On 11/21/06, *Daniel Kastl* <daniel.kastl at gmx.de 
>>>> <mailto:daniel.kastl at gmx.de>> wrote:
>>>>
>>>>     Hi list,
>>>>
>>>>     While with version 2.1 of OpenLayers there was no 
>>>>         
>> problem to use both
>>     
>>>>     OpenLayers' Prototype and jQuery javascript framework, 
>>>>         
>> it doesn't work
>>     
>>>>     anymore with version 2.2.
>>>>
>>>>     Firebug error message:
>>>>     "this.div.appendChild is not a function" in Map.js (line 136):
>>>>     this.div.appendChild(this.viewPortDiv);
>>>>
>>>>     I followed the jQuery guide how to run jQuery together 
>>>>         
>> with Prototype
>>     
>>>>     library ( http://jquery.com/docs/PrototypeAndJQuery/)
>>>>
>>>>     I tested with the Wiki example:
>>>>
>>>>     <?xml version="1.0" encoding="UTF-8" ?>
>>>>     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
>>>>     "xhtml1-transitional.dtd">
>>>>     <html xmlns="http://www.w3.org/1999/xhtml" 
>>>>         
>> xml:lang="jp" lang="jp">
>>     
>>>>     <head>
>>>>       <meta http-equiv="Content-type"  content="text/html; />
>>>>       <title>OpenLayers Demo</title>
>>>>
>>>>       <!-- jQuery -->
>>>>       <script type="text/javascript"
>>>>     src="http://jquery.com/src/jquery-latest.pack.js
>>>>     <http://jquery.com/src/jquery-latest.pack.js>"></script>
>>>>       <script type="text/javascript">
>>>>         JQ = $;  // rename $ function to use jQuery together with
>>>>     Prototype
>>>>       </script>
>>>>
>>>>       <!-- OpenLayers -->
>>>>       <script type="text/javascript"
>>>>     src="./2.2/lib/OpenLayers.js"></script>
>>>>     </head>
>>>>
>>>>     <body>
>>>>       <div id="map" style="width:100%;height:100%;"></div>
>>>>       <script defer="defer" type="text/javascript">
>>>>         var map = new OpenLayers.Map('map');
>>>>         var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",
>>>>             "http://labs.metacarta.com/wms/vmap0", 
>>>>         
>> {layers: 'basic'} );
>>     
>>>>         map.addLayer(wms);
>>>>         map.zoomToMaxExtent();
>>>>       </script>
>>>>     </body>
>>>>
>>>>     Would be nice somebody knows a solution how to use both,
>>>>     OpenLayers and
>>>>     jQuery.
>>>>
>>>>     Daniel
>>>>
>>>>
>>>>     _______________________________________________
>>>>     Users mailing list
>>>>     Users at openlayers.org <mailto:Users at openlayers.org>
>>>>     http://openlayers.org/mailman/listinfo/users
>>>>
>>>>
>>>>     
>>>>         
>>> _______________________________________________
>>> Users mailing list
>>> Users at openlayers.org
>>> http://openlayers.org/mailman/listinfo/users
>>>
>>>   
>>>       
>> _______________________________________________
>> Users mailing list
>> Users at openlayers.org
>> http://openlayers.org/mailman/listinfo/users
>>
>>     
>
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users
>
>   




More information about the Users mailing list