You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by olip <ol...@googlemail.com> on 2009/04/22 16:15:13 UTC

IE 8 and Javascript Rendersupport.addScript() problem

Hi everyone!

The following code works fine under Firefox3 but not under IE8.

I made a little component where I build up a drop down menue and a
javascript section which should access the components id element.

====================
Test.java (a component):


@IncludeJavaScriptLibrary(value = {"Test.js"})
public class Test {

    @Inject
     private ComponentResources resources;
    @Environmental
    private RenderSupport pageRenderSupport;
    

    @BeginRender
    public void graph(MarkupWriter writer){
        //Method selection..make a drop down menue
        writer.write("Choose a wellType: ");
        //make a selection - drop down box
        writer.element("form","name","listColors");
        writer.element("select","id","wellType","name","WellType");
        //the value will be the html color we will paint the table element
with when clicking at a specific well
           
writer.element("option","value","positive","selected","selected");
                writer.write("positive");
            writer.end();
            writer.element("option","value","negative");
                writer.write("negative");
            writer.end();
            writer.element("option","value","other");
                writer.write("other");
            writer.end();
            writer.element("option","value","contaminated");
                writer.write("contaminated");
            writer.end();

        //end of selectionBox div
         writer.end();
        //end of form
        writer.end();
    }
    void afterRender(MarkupWriter writer){

        //javascript will send the name of the clicked well names later to
this java class back (see onreceiveWellID method)
        Link link = resources.createEventLink("receiveWellID");
        pageRenderSupport.addScript("new Test(wellType);");
    }
    

}

====================
Therefore I made a small javascript file:


Test.js:

var Test = Class.create();
Test.prototype = {


    initialize: function(wellType) {
        alert(wellType.value);
    }
}


====================
A small test page:


TestComponent.tml

<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
 <head>
    <title>Tapestry 5 Demo Application</title>
 </head>
  <body>
      <t:Test/>
 </body>
</html>



====================

Now if I am using this component everything works fine under FF3 but under
IE8 I got the message that the 'wellType' is undefined.
But if I look into the html generated code I can see that the select tags
are before the javascript so it should find the element id.

Is this a bug in Explorer8.


Thanks for your help.

Oliver

-- 
View this message in context: http://n2.nabble.com/IE-8-and-Javascript-Rendersupport.addScript%28%29-problem-tp2676456p2676456.html
Sent from the Tapestry Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: IE 8 and Javascript Rendersupport.addScript() problem

Posted by Howard Lewis Ship <hl...@gmail.com>.
       pageRenderSupport.addScript("new Test(wellType);");

I'm not surprised that IE8 fails, but that FF3 works; in fact, there's
probably an error in the FF3 console. What is the value of variable
wellType?  It's undefined.

On Wed, Apr 22, 2009 at 7:15 AM, olip <ol...@googlemail.com> wrote:
>
> Hi everyone!
>
> The following code works fine under Firefox3 but not under IE8.
>
> I made a little component where I build up a drop down menue and a
> javascript section which should access the components id element.
>
> ====================
> Test.java (a component):
>
>
> @IncludeJavaScriptLibrary(value = {"Test.js"})
> public class Test {
>
>    @Inject
>     private ComponentResources resources;
>    @Environmental
>    private RenderSupport pageRenderSupport;
>
>
>    @BeginRender
>    public void graph(MarkupWriter writer){
>        //Method selection..make a drop down menue
>        writer.write("Choose a wellType: ");
>        //make a selection - drop down box
>        writer.element("form","name","listColors");
>        writer.element("select","id","wellType","name","WellType");
>        //the value will be the html color we will paint the table element
> with when clicking at a specific well
>
> writer.element("option","value","positive","selected","selected");
>                writer.write("positive");
>            writer.end();
>            writer.element("option","value","negative");
>                writer.write("negative");
>            writer.end();
>            writer.element("option","value","other");
>                writer.write("other");
>            writer.end();
>            writer.element("option","value","contaminated");
>                writer.write("contaminated");
>            writer.end();
>
>        //end of selectionBox div
>         writer.end();
>        //end of form
>        writer.end();
>    }
>    void afterRender(MarkupWriter writer){
>
>        //javascript will send the name of the clicked well names later to
> this java class back (see onreceiveWellID method)
>        Link link = resources.createEventLink("receiveWellID");
>        pageRenderSupport.addScript("new Test(wellType);");
>    }
>
>
> }
>
> ====================
> Therefore I made a small javascript file:
>
>
> Test.js:
>
> var Test = Class.create();
> Test.prototype = {
>
>
>    initialize: function(wellType) {
>        alert(wellType.value);
>    }
> }
>
>
> ====================
> A small test page:
>
>
> TestComponent.tml
>
> <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
>  <head>
>    <title>Tapestry 5 Demo Application</title>
>  </head>
>  <body>
>      <t:Test/>
>  </body>
> </html>
>
>
>
> ====================
>
> Now if I am using this component everything works fine under FF3 but under
> IE8 I got the message that the 'wellType' is undefined.
> But if I look into the html generated code I can see that the select tags
> are before the javascript so it should find the element id.
>
> Is this a bug in Explorer8.
>
>
> Thanks for your help.
>
> Oliver
>
> --
> View this message in context: http://n2.nabble.com/IE-8-and-Javascript-Rendersupport.addScript%28%29-problem-tp2676456p2676456.html
> Sent from the Tapestry Users mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>



-- 
Howard M. Lewis Ship

Creator of Apache Tapestry
Director of Open Source Technology at Formos

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org