HI there, here is a basic piece of HTML/JavaScript that duplicates something similar in an application we''re working on: <html> <head> <script src="prototype.js" type="text/javascript" ></script> </head> <body> <div id="ST_1">ST_1</div> </body> <script> var widgetId = "ST_1"; var widgetStyleParam = "border"; var widgetStyleValue = "1px solid black"; eval("$("+widgetId+").style."+widgetStyleParam+"=''"+widgetStyleValue +"''"); </script> </html> The problem we''re having is that with firebug enabled the eval line raises the following warning in Firebug: "Element referenced by ID/NAME in the global scope. Use W3C standard document.getElementById() instead." as we make ''lots'' of use of the above type of eval statement (and have a large number of page elements) the performance hit makes some of our subsecond loops take tens of seconds. No performance hit if firebug is turned off though. I''ve read in some other posts something about the warning being incorrect and that prototype is working as intended, but that doesn''t help with the first impressions people get when running our app if firebug is installed and enabled (which is quite common amongst developers). I''m sure there is something obvious we''ve overlooked and any help is appreciated. Many thanks again, Gareth --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
Hi Gareth, You shouldn''t be using eval for this. There are very few legitimate uses of the eval construct. This is certainly not one of them. You should be using the following instead: foo[bar] // GOOD eval(foo + ''.'' + bar) // AWFUL! Try the following: var widgetId = "ST_1"; var widgetStyleParam = "border"; var widgetStyleValue = "1px solid black"; $(widgetId).style[widgetStyleParam] widgetStyleValue; Note that you''d probably be better of using Element#setStyle like so: $(widgetId).setStyle(''border: 1px solid black;''); Hope this helps, Tobie On Jan 16, 11:34 am, GarethAtFlignet <garethinwa...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:> HI there, > > here is a basic piece of HTML/JavaScript that duplicates something > similar in an application we''re working on: > > <html> > <head> > <script src="prototype.js" type="text/javascript" ></script> > </head> > > <body> > <div id="ST_1">ST_1</div> > </body> > > <script> > var widgetId = "ST_1"; > var widgetStyleParam = "border"; > var widgetStyleValue = "1px solid black"; > eval("$("+widgetId+").style."+widgetStyleParam+"=''"+widgetStyleValue > +"''"); > </script> > </html> > > The problem we''re having is that with firebug enabled the eval line > raises the following warning in Firebug: > > "Element referenced by ID/NAME in the global scope. Use W3C standard > document.getElementById() instead." > > as we make ''lots'' of use of the above type of eval statement (and have > a large number of page elements) the performance hit makes some of our > subsecond loops take tens of seconds. No performance hit if firebug is > turned off though. > > I''ve read in some other posts something about the warning being > incorrect and that prototype is working as intended, but that doesn''t > help with the first impressions people get when running our app if > firebug is installed and enabled (which is quite common amongst > developers). > > I''m sure there is something obvious we''ve overlooked and any help is > appreciated. > > Many thanks again, > > Gareth--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---
Thanks Tobie, that has made a big difference. On Jan 16, 10:57 am, Tobie Langel <tobie.lan...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Hi Gareth, > > You shouldn''t be using eval for this. > > There are very few legitimate uses of the eval construct. > > This is certainly not one of them. > > You should be using the following instead: > > foo[bar] // GOOD > eval(foo + ''.'' + bar) // AWFUL! > > Try the following: > > var widgetId = "ST_1"; > var widgetStyleParam = "border"; > var widgetStyleValue = "1px solid black"; > $(widgetId).style[widgetStyleParam] > widgetStyleValue; > > Note that you''d probably be better of using Element#setStyle like so: > > $(widgetId).setStyle(''border: 1px solid black;''); > > Hope this helps, > > Tobie > > On Jan 16, 11:34 am, GarethAtFlignet <garethinwa...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> > wrote: > > > HI there, > > > here is a basic piece of HTML/JavaScript that duplicates something > > similar in an application we''re working on: > > > <html> > > <head> > > <script src="prototype.js" type="text/javascript" ></script> > > </head> > > > <body> > > <div id="ST_1">ST_1</div> > > </body> > > > <script> > > var widgetId = "ST_1"; > > var widgetStyleParam = "border"; > > var widgetStyleValue = "1px solid black"; > > eval("$("+widgetId+").style."+widgetStyleParam+"=''"+widgetStyleValue > > +"''"); > > </script> > > </html> > > > The problem we''re having is that with firebug enabled the eval line > > raises the following warning in Firebug: > > > "Element referenced by ID/NAME in the global scope. Use W3C standard > > document.getElementById() instead." > > > as we make ''lots'' of use of the above type of eval statement (and have > > a large number of page elements) the performance hit makes some of our > > subsecond loops take tens of seconds. No performance hit if firebug is > > turned off though. > > > I''ve read in some other posts something about the warning being > > incorrect and that prototype is working as intended, but that doesn''t > > help with the first impressions people get when running our app if > > firebug is installed and enabled (which is quite common amongst > > developers). > > > I''m sure there is something obvious we''ve overlooked and any help is > > appreciated. > > > Many thanks again, > > > Gareth--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-spinoffs-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---