Pattern on delayed action

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Brian

    Pattern on delayed action

    Hi all... This question is more for the GURUs out there. It is not a
    question on how to do something, but why it happens, and I am trying to
    figure out if there is a pattern. I am using IE, but this pattern also
    happens in Mozilla, but not always the same way... I am not as interested in
    how the browsers are different, but the big question is: Is there a pattern
    to what type of actions are delayed for after the scripts have finished, and
    what type of actions happen instantly?

    Here is a snippit, to start out the discussion:

    alert(location. href)
    location.href = "SOMEPLACE_NOT_ HERE"
    alert(location. href)

    If you run this code, the alert message will respond with the same
    answer...the current page. Even though the href string is set, the value is
    delayed. It is not until the script block has finished that the location
    changes, and the string value has changed.

    Now, under the hood, I understand what is going on... The JavaScript engine
    executes code on a DOM model, maintained by the browser. The JS engine
    needs to finish before control is given back to the browser, to act on the
    change. In the mean time, since the actual location has not changed,
    reading the location.href stays the same.

    Ok, moving on... Look at the following code:

    function ButtonWasClicke d ()
    {
    document.forms['form_id'].elements['text_id'].value = "WOOHOO";
    document.forms['form_id'].submit();
    document.forms['form_id'].elements['text_id'].value = "BLUBBER";
    alert(document. forms['form_id'].elements['text_id'].value;)
    }

    This code will also wait until the script has ended to run submit, so the
    alert will show "BLUBBER".. . BUT, the actual submission will be of "WOOHOO".

    Lets replace the alert with another submit:

    function ButtonWasClicke d ()
    {
    document.forms['form_id'].elements['text_id'].value = "WOOHOO";
    document.forms['form_id'].submit();
    document.forms['form_id'].elements['text_id'].value = "BLUBBER";
    document.forms['form_id'].submit();
    }

    In this case, only ONE of the submits had occurred... I did a scan of the
    HTTP traffic to verify that this was the case. In IE, BLUBBER is sent, and
    in Mozilla, WOOHOO is sent to the form handler.

    I hope this makes sense... I can elaborate more if necessary.

    Thanks,
    Brian


  • VK

    #2
    Re: Pattern on delayed action

    You are exploring the twilight zone of so called "orphan" scripts.

    In theory any inline client-side script (JavaScript, JScript, VBScript)
    exists only within the "parenting" page and goes away with that page.
    Thus statements like "self.document. location.href=x ",
    "self.document. write()" and so suppose to be the last bullet in your
    (script) temple: "do it and die".

    On practice, to improve the performance, each script interpreter has a
    cash for currently executing code with rather complicated "advance
    reading" mechanics. As a result, the script may stay alive even after
    the parenting page is "passed away". When, how and in what consequence
    the leftovers will be executed and destroyed, depends on the script cash
    programming of the current browser and on the current air pressure in
    Panama City, FL :-)

    IMHO making and using orphan scripts is a bad programming practice. Try
    to avoid it.



    Comment

    • Brian

      #3
      Re: Pattern on delayed action


      "VK" <schools_ring@y ahoo.com> wrote in message
      news:3fd66f57$0 $21811$9b622d9e @news.freenet.d e...[color=blue]
      > You are exploring the twilight zone of so called "orphan" scripts.
      >
      > In theory any inline client-side script (JavaScript, JScript, VBScript)
      > exists only within the "parenting" page and goes away with that page.
      > Thus statements like "self.document. location.href=x ",
      > "self.document. write()" and so suppose to be the last bullet in your
      > (script) temple: "do it and die".
      >
      > On practice, to improve the performance, each script interpreter has a
      > cash for currently executing code with rather complicated "advance
      > reading" mechanics. As a result, the script may stay alive even after
      > the parenting page is "passed away". When, how and in what consequence
      > the leftovers will be executed and destroyed, depends on the script cash
      > programming of the current browser and on the current air pressure in
      > Panama City, FL :-)
      >
      > IMHO making and using orphan scripts is a bad programming practice. Try
      > to avoid it.
      >
      >
      >[/color]

      Thanks for the info... unfortuantely, in the context of the question, I am
      not a scripter, but a browser developer. I am trying to make decisions in
      my interpreter that closely mimic the popular browsers. Because of this,
      the advice to not use orphan scripts doesnt work for me, because people
      might do it, and expect it to work since it works in the other browsers, and
      I need to act accordingly.

      What I am looking for, is to see if there are any patterns with what is
      executed instantly, and what is not... I know that location.href is not
      changed instantly, but forms[0].elements[0].value is changed the moment I
      set it. What is the pattern? Has anyone noticed one?

      B




      Comment

      • Lee

        #4
        Re: Pattern on delayed action

        Brian said:
        [color=blue]
        >What I am looking for, is to see if there are any patterns with what is
        >executed instantly, and what is not... I know that location.href is not
        >changed instantly, but forms[0].elements[0].value is changed the moment I
        >set it. What is the pattern? Has anyone noticed one?[/color]

        You must be at the very early stages of beginning to think
        about planning to develop a browser if this isn't obvious.

        Tasks that are completely within the control of the browser
        happen immediately. Tasks that are delegated to the operating
        system or to the server happen asynchronously.

        Comment

        • Brian

          #5
          Re: Pattern on delayed action


          "Lee" <REM0VElbspamtr ap@cox.net> wrote in message
          news:br7h9i02va s@drn.newsguy.c om...[color=blue]
          > Brian said:
          >[color=green]
          > >What I am looking for, is to see if there are any patterns with what is
          > >executed instantly, and what is not... I know that location.href is not
          > >changed instantly, but forms[0].elements[0].value is changed the moment I
          > >set it. What is the pattern? Has anyone noticed one?[/color]
          >
          > You must be at the very early stages of beginning to think
          > about planning to develop a browser if this isn't obvious.
          >
          > Tasks that are completely within the control of the browser
          > happen immediately. Tasks that are delegated to the operating
          > system or to the server happen asynchronously.
          >[/color]

          No need to be condecending... I am well past the planning stages... The
          reason it is not obvious, is because the browsers (IE and Mozilla) do these
          things differently. For the most part, what you said makes sense, but there
          is a level of caching that happens of the values that is not making sense.

          For instance, when you change location.href, the JS engine is attached to
          the DOM, and it is very easy to make that change immediately. In fact, it
          is harder to delay the change. I have already implemented my location
          object to work with the delay (like IE), and it works fine... I am just
          getting confused to know exactly which values are set immediately, which are
          cached.

          Brian


          Comment

          • VK

            #6
            Re: Pattern on delayed action

            1. "delay with location.href"
            document.locati on.href is really not a property (despite it's stated and
            it looks like one), but a method. Moreover, this is a system peer
            method. By setting href, you are peering to the internal browser code to
            get the indicated resource (emulation of <address>+<Ente r> input in the
            address bar).
            By requesting href, your are peering again, and you are getting the
            system value of the page your browser considers to be current. And most
            of browsers follow the rule "don't drop the old until the new came", so
            they keep the old href value until the requested page fires onload
            event. (Because it also can be an error or a redirection on the go).

            2. Globally I don't think you can emulate the EXACT script engine
            behavior w/o complete reverse engineering of this engine.

            3. If you still want to play with orphan scripts, check the behaviour:
            a) inline script vs. filed script (<script>...</script> vs. <script
            src=..></script>)
            b) A construct used one-two times before the script's "suicide" and a
            construct being in intensive use before the "suicide". This alone will
            keep you buzy for a couple of weeks. Also "Interferen ce of runtime code
            optimization and orphaned scripts" would sound good enough for a
            master's degree :-)


            Comment

            • Grant Wagner

              #7
              Re: Pattern on delayed action

              Lee wrote:
              [color=blue]
              > Brian said:
              >[color=green]
              > >What I am looking for, is to see if there are any patterns with what is
              > >executed instantly, and what is not... I know that location.href is not
              > >changed instantly, but forms[0].elements[0].value is changed the moment I
              > >set it. What is the pattern? Has anyone noticed one?[/color]
              >
              > You must be at the very early stages of beginning to think
              > about planning to develop a browser if this isn't obvious.
              >
              > Tasks that are completely within the control of the browser
              > happen immediately. Tasks that are delegated to the operating
              > system or to the server happen asynchronously.[/color]

              In all fairness, I think the pattern isn't quite so clear cut. Take for
              example:

              <img src="image1.jpg " name="test" />
              <script type="text/javascript">
              document.images['test'].src = 'image2.jpg';
              alert(document. images['test'].src);
              </script>

              If it were true that the image had to be loaded from the server before you'd
              see the result in client-side script, the above would alert "image1.jpg ", but
              it does not. In every browser I tested (Netscape 4.78, Firebird 0.7, IE6SP1
              and Opera 7.23), it alerted "image2.jpg ", regardless of whether the image had
              actually completed loading successfully. In fact, in some cases, I specified
              document.image['test'].src = 'file.pdf'; and client-side JavaScript alerted
              "file.pdf", even when it's obvious that image object could never successfully
              load the file.

              On the other hand:

              <script type="text/javascript">
              window.location .href = 'http://www.yahoo.com';
              alert(window.lo cation.href);
              </script>

              Always alerts the page you're on.

              That said, I think it's pretty clear that the location object is "special" in
              many ways (not the least of which is that you can assign location =
              'something'; and it magically assigns the value to the href property). The way
              I'd view it is that window.location .href is a "request message" for the
              location object to navigate to a new page, not an assignment (and as such
              should probably have been a method, not a property). In other words, think of
              href as a read-only property, and any assignment to it (or the location object
              itself) as an invocation of a method:

              <script type="text/javascript">
              window.location .navigateTo('ht tp://www.yahoo.com') ; // fictional method
              invocation
              alert(window.lo cation.href);
              </script>

              Now it's clear why href isn't set to what you might think it should be,
              because it isn't set by the object until navigateTo() has completed
              successfully.

              document.images[].src on the other hand, is both the GET request and an
              assignment to the property.

              --
              | Grant Wagner <gwagner@agrico reunited.com>

              * Client-side Javascript and Netscape 4 DOM Reference available at:
              *


              * Internet Explorer DOM Reference available at:
              *
              Find official documentation, practical know-how, and expert guidance for builders working and troubleshooting in Microsoft products.


              * Netscape 6/7 DOM Reference available at:
              * http://www.mozilla.org/docs/dom/domref/
              * Tips for upgrading JavaScript for Netscape 7 / Mozilla
              * http://www.mozilla.org/docs/web-deve...upgrade_2.html


              Comment

              • Lee

                #8
                Re: Pattern on delayed action

                Brian said:[color=blue]
                >
                >
                >"Lee" <REM0VElbspamtr ap@cox.net> wrote in message
                >news:br7h9i02v as@drn.newsguy. com...[color=green]
                >> Brian said:
                >>[color=darkred]
                >> >What I am looking for, is to see if there are any patterns with what is
                >> >executed instantly, and what is not... I know that location.href is not
                >> >changed instantly, but forms[0].elements[0].value is changed the moment I
                >> >set it. What is the pattern? Has anyone noticed one?[/color]
                >>
                >> You must be at the very early stages of beginning to think
                >> about planning to develop a browser if this isn't obvious.
                >>
                >> Tasks that are completely within the control of the browser
                >> happen immediately. Tasks that are delegated to the operating
                >> system or to the server happen asynchronously.
                >>[/color]
                >
                >No need to be condecending... I am well past the planning stages... The
                >reason it is not obvious, is because the browsers (IE and Mozilla) do these
                >things differently. For the most part, what you said makes sense, but there
                >is a level of caching that happens of the values that is not making sense.
                >
                >For instance, when you change location.href, the JS engine is attached to
                >the DOM, and it is very easy to make that change immediately. In fact, it
                >is harder to delay the change. I have already implemented my location
                >object to work with the delay (like IE), and it works fine... I am just
                >getting confused to know exactly which values are set immediately, which are
                >cached.[/color]

                You don't seem to be modeling it correctly.
                Writing to and reading from the Location object are not like similar
                actions on a custom Object. When you you assign a value to the href
                attribute, a complete URL is determined and a page load is initiated.
                When you read the value of the href attribute, you get a reflection
                of the URL of the currently loaded page. It doesn't just fetch the
                value that was assigned.

                Comment

                • Lasse Reichstein Nielsen

                  #9
                  Re: Pattern on delayed action

                  Grant Wagner <gwagner@agrico reunited.com> writes:
                  [color=blue]
                  > In all fairness, I think the pattern isn't quite so clear cut. Take for
                  > example:
                  >
                  > <img src="image1.jpg " name="test" />
                  > <script type="text/javascript">
                  > document.images['test'].src = 'image2.jpg';
                  > alert(document. images['test'].src);
                  > </script>
                  >
                  > If it were true that the image had to be loaded from the server before you'd
                  > see the result in client-side script, the above would alert "image1.jpg ", but
                  > it does not.[/color]

                  No it shouldn't, it should alert "image2.jpg " (possibly expanded to a
                  full URL). You make an assignment, and that takes effect immediately,
                  as any other assignment to a property value. What is delayed is the
                  effect of that assignment on the image shown. With the next refresh,
                  the old image is gone, but the new image doesn't appear until it has
                  been loaded.
                  [color=blue]
                  > In every browser I tested (Netscape 4.78, Firebird 0.7, IE6SP1
                  > and Opera 7.23), it alerted "image2.jpg ", regardless of whether the image had
                  > actually completed loading successfully.[/color]

                  It should.
                  [color=blue]
                  > On the other hand:[/color]
                  ....[color=blue]
                  > window.location .href = 'http://www.yahoo.com';
                  > alert(window.lo cation.href);[/color]
                  ....[color=blue]
                  > Always alerts the page you're on.[/color]
                  [color=blue]
                  > That said, I think it's pretty clear that the location object is "special" in
                  > many ways[/color]
                  ....
                  [color=blue]
                  > In other words, think of href as a read-only property, and any
                  > assignment to it (or the location object itself) as an invocation of
                  > a method:[/color]
                  ....[color=blue]
                  > window.location .navigateTo('ht tp://www.yahoo.com') ; // fictional method
                  > invocation[/color]

                  Agree completely.
                  [color=blue]
                  > Now it's clear why href isn't set to what you might think it should be,
                  > because it isn't set by the object until navigateTo() has completed
                  > successfully.[/color]

                  And then it is actually a different location object on a different page.
                  [color=blue]
                  > document.images[].src on the other hand, is both the GET request and an
                  > assignment to the property.[/color]

                  Yes. The assignment is insantaneous. The GET takes time (and will eventually
                  trigger the image's onload handler).

                  /L
                  --
                  Lasse Reichstein Nielsen - lrn@hotpop.com
                  DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleD OM.html>
                  'Faith without judgement merely degrades the spirit divine.'

                  Comment

                  • Brian

                    #10
                    Re: Pattern on delayed action


                    "Lee" <REM0VElbspamtr ap@cox.net> wrote in message
                    news:br7oai0o3u @drn.newsguy.co m...[color=blue]
                    > Brian said:[color=green]
                    > >
                    > >
                    > >"Lee" <REM0VElbspamtr ap@cox.net> wrote in message
                    > >news:br7h9i02v as@drn.newsguy. com...[color=darkred]
                    > >> Brian said:
                    > >>
                    > >> >What I am looking for, is to see if there are any patterns with what[/color][/color][/color]
                    is[color=blue][color=green][color=darkred]
                    > >> >executed instantly, and what is not... I know that location.href is[/color][/color][/color]
                    not[color=blue][color=green][color=darkred]
                    > >> >changed instantly, but forms[0].elements[0].value is changed the[/color][/color][/color]
                    moment I[color=blue][color=green][color=darkred]
                    > >> >set it. What is the pattern? Has anyone noticed one?
                    > >>
                    > >> You must be at the very early stages of beginning to think
                    > >> about planning to develop a browser if this isn't obvious.
                    > >>
                    > >> Tasks that are completely within the control of the browser
                    > >> happen immediately. Tasks that are delegated to the operating
                    > >> system or to the server happen asynchronously.
                    > >>[/color]
                    > >
                    > >No need to be condecending... I am well past the planning stages... The
                    > >reason it is not obvious, is because the browsers (IE and Mozilla) do[/color][/color]
                    these[color=blue][color=green]
                    > >things differently. For the most part, what you said makes sense, but[/color][/color]
                    there[color=blue][color=green]
                    > >is a level of caching that happens of the values that is not making[/color][/color]
                    sense.[color=blue][color=green]
                    > >
                    > >For instance, when you change location.href, the JS engine is attached to
                    > >the DOM, and it is very easy to make that change immediately. In fact,[/color][/color]
                    it[color=blue][color=green]
                    > >is harder to delay the change. I have already implemented my location
                    > >object to work with the delay (like IE), and it works fine... I am just
                    > >getting confused to know exactly which values are set immediately, which[/color][/color]
                    are[color=blue][color=green]
                    > >cached.[/color]
                    >
                    > You don't seem to be modeling it correctly.
                    > Writing to and reading from the Location object are not like similar
                    > actions on a custom Object. When you you assign a value to the href
                    > attribute, a complete URL is determined and a page load is initiated.
                    > When you read the value of the href attribute, you get a reflection
                    > of the URL of the currently loaded page. It doesn't just fetch the
                    > value that was assigned.
                    >[/color]

                    Yes, that is how I have implemented it.
                    B


                    Comment

                    • Brian

                      #11
                      Re: Pattern on delayed action


                      "Lasse Reichstein Nielsen" <lrn@hotpop.com > wrote in message
                      news:1xrc2qgg.f sf@hotpop.com.. .[color=blue]
                      > Grant Wagner <gwagner@agrico reunited.com> writes:
                      >[color=green]
                      > > In all fairness, I think the pattern isn't quite so clear cut. Take for
                      > > example:
                      > >
                      > > <img src="image1.jpg " name="test" />
                      > > <script type="text/javascript">
                      > > document.images['test'].src = 'image2.jpg';
                      > > alert(document. images['test'].src);
                      > > </script>
                      > >
                      > > If it were true that the image had to be loaded from the server before[/color][/color]
                      you'd[color=blue][color=green]
                      > > see the result in client-side script, the above would alert[/color][/color]
                      "image1.jpg ", but[color=blue][color=green]
                      > > it does not.[/color]
                      >
                      > No it shouldn't, it should alert "image2.jpg " (possibly expanded to a
                      > full URL). You make an assignment, and that takes effect immediately,
                      > as any other assignment to a property value. What is delayed is the
                      > effect of that assignment on the image shown. With the next refresh,
                      > the old image is gone, but the new image doesn't appear until it has
                      > been loaded.
                      >[color=green]
                      > > In every browser I tested (Netscape 4.78, Firebird 0.7, IE6SP1
                      > > and Opera 7.23), it alerted "image2.jpg ", regardless of whether the[/color][/color]
                      image had[color=blue][color=green]
                      > > actually completed loading successfully.[/color]
                      >
                      > It should.
                      >[color=green]
                      > > On the other hand:[/color]
                      > ...[color=green]
                      > > window.location .href = 'http://www.yahoo.com';
                      > > alert(window.lo cation.href);[/color]
                      > ...[color=green]
                      > > Always alerts the page you're on.[/color]
                      >[color=green]
                      > > That said, I think it's pretty clear that the location object is[/color][/color]
                      "special" in[color=blue][color=green]
                      > > many ways[/color]
                      > ...
                      >[color=green]
                      > > In other words, think of href as a read-only property, and any
                      > > assignment to it (or the location object itself) as an invocation of
                      > > a method:[/color]
                      > ...[color=green]
                      > > window.location .navigateTo('ht tp://www.yahoo.com') ; // fictional method
                      > > invocation[/color]
                      >
                      > Agree completely.
                      >[color=green]
                      > > Now it's clear why href isn't set to what you might think it should be,
                      > > because it isn't set by the object until navigateTo() has completed
                      > > successfully.[/color]
                      >
                      > And then it is actually a different location object on a different page.
                      >[color=green]
                      > > document.images[].src on the other hand, is both the GET request and an
                      > > assignment to the property.[/color]
                      >
                      > Yes. The assignment is insantaneous. The GET takes time (and will[/color]
                      eventually[color=blue]
                      > trigger the image's onload handler).
                      >
                      > /L
                      > --
                      > Lasse Reichstein Nielsen - lrn@hotpop.com
                      > DHTML Death Colors:[/color]
                      <URL:http://www.infimum.dk/HTML/rasterTriangleD OM.html>[color=blue]
                      > 'Faith without judgement merely degrades the spirit divine.'[/color]

                      Ok, with that said, what is known about the form.submit() method?

                      document.forms['myform'].elements['mytext'].value = "Something1 ";
                      document.forms['myform'].submit();
                      document.forms['myform'].elements['mytext'].value = "Something2 ";
                      document.forms['myform'].submit();

                      What happens if you call form.submit() twice? In IE, the form handler will
                      get Something2, but in Mozilla, it will get Something1. If you take away
                      the second submit in IE, the form handler will get Something1, even though
                      Something2 was set before the script block ended. In any case, there is
                      only one HTTP request being made.

                      (IE) It is almost as if the submit is captured as a flag is set for when the
                      script block has ended, and a snapshot of the elements was taken. When the
                      second submit is called, the same thing happens, so any changes to elements
                      after that moment are not actually sent. Actually, it is probably more
                      likely that the URL including the search portion of the path is built up,
                      and stored every time submit() is called. When the script block returns to
                      the browser, the string is checked... if it is not empty, a GET or POST is
                      made and the string is cleared.

                      In Mozilla, I guess it likely does something similar, except that when the
                      second submit occurs, it recognizes that the new URL string is set, and
                      refuses to do anything.

                      Just a thought,
                      Brian


                      Comment

                      • Thomas 'PointedEars' Lahn

                        #12
                        Re: Pattern on delayed action

                        VK wrote:
                        [color=blue]
                        > document.locati on.href is really not a property (despite
                        > it's stated and it looks like one), but a method.[/color]

                        No, it is a property which has setter/getter methods assigned to it.


                        PointedEars

                        Comment

                        • VK

                          #13
                          Re: Pattern on delayed action

                          > document.forms['myform'].elements['mytext'].value = "Something1 ";[color=blue]
                          > document.forms['myform'].submit();
                          > document.forms['myform'].elements['mytext'].value = "Something2 ";
                          > document.forms['myform'].submit();[/color]

                          I'm affraid that the big picture is still escaping you. By the HTTP
                          protocol and scripting specs, the above code has no meanning starting
                          the 3rd line. It's as meaningless as a Java code like:
                          public int crazyMethod(int b, int c) {
                          int a = b + c;
                          Runtime.getRunt ime().exit(a);
                          return(a);
                          }

                          or Perl code like:
                          $a = $b+$c;
                          exit($a);
                          doMyStuffWith($ a);

                          or it's as absurde as sentence "He died and made a cup of coffee".

                          Yes, the system allows you to execute it and even receive some results
                          (for the reasons spelled before this posting).

                          You want to mimic it exactly (that was the reason of your first
                          posting)? You cannot.
                          You want to bring some order in the haos? An object's model *mainly* is
                          not available during the replacement of that object with another object.
                          The replacing object's model *mainly* is not available until that object
                          arrived safely and in one piece (onload event).

                          Hope this help.


                          Comment

                          • Brian

                            #14
                            Re: Pattern on delayed action


                            "VK" <schools_ring@y ahoo.com> wrote in message[color=blue][color=green]
                            > > document.forms['myform'].elements['mytext'].value = "Something1 ";
                            > > document.forms['myform'].submit();
                            > > document.forms['myform'].elements['mytext'].value = "Something2 ";
                            > > document.forms['myform'].submit();[/color]
                            >
                            > I'm affraid that the big picture is still escaping you. By the HTTP
                            > protocol and scripting specs, the above code has no meanning starting
                            > the 3rd line. It's as meaningless as a Java code like:
                            > public int crazyMethod(int b, int c) {
                            > int a = b + c;
                            > Runtime.getRunt ime().exit(a);
                            > return(a);
                            > }
                            >
                            > or Perl code like:
                            > $a = $b+$c;
                            > exit($a);
                            > doMyStuffWith($ a);
                            >
                            > or it's as absurde as sentence "He died and made a cup of coffee".
                            >
                            > Yes, the system allows you to execute it and even receive some results
                            > (for the reasons spelled before this posting).
                            >
                            > You want to mimic it exactly (that was the reason of your first
                            > posting)? You cannot.
                            > You want to bring some order in the haos? An object's model *mainly* is
                            > not available during the replacement of that object with another object.
                            > The replacing object's model *mainly* is not available until that object
                            > arrived safely and in one piece (onload event).
                            >
                            > Hope this help.
                            >
                            >[/color]

                            No, I really do not think that the big picture is escaping me... I am
                            writing a tool that tests code for users that have already gotten their code
                            working properly in IE (and eventually Netscape). These details are
                            important to me. If IE handles improper symantics, I need to as well. (to
                            the best of my ability). Not doing so violates the requirements of my
                            project.

                            I appreciate the thoughts everyone has thrown around. They are useful.
                            Thanks,
                            Brian


                            Comment

                            Working...