body.innerHTML issue

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

    body.innerHTML issue

    I'm having a problem with apostrophes & quotes when using body.innerHTML.

    With the statement: bodyText = document.body.i nnerHTML

    If there was a Form object on my page such as:
    <input name="email" type="text" id="email">

    bodyText transilates it into
    <input name=email type=text id=email>

    Is there anything i can do to fix this?
    Thanks!
  • Vincent van Beveren

    #2
    Re: body.innerHTML issue

    > bodyText transilates it into[color=blue]
    > <input name=email type=text id=email>
    >
    > Is there anything i can do to fix this?[/color]

    You need to escape it.

    This is most easly done with regular expressions (I believe)

    bodyText = bodyText.replac e(/\"/g,"\\\"");

    should work



    Comment

    • Richard Cornford

      #3
      Re: body.innerHTML issue

      Reed wrote:[color=blue]
      > I'm having a problem with apostrophes & quotes when
      > using body.innerHTML.
      >
      > With the statement: bodyText = document.body.i nnerHTML
      >
      > If there was a Form object on my page such as:
      > <input name="email" type="text" id="email">
      >
      > bodyText transilates it into
      > <input name=email type=text id=email>[/color]

      You have only tired that on one browser. Mozilla and Opera each produce
      distinct output form innerHTML (as do Konqueror/Safari and IceBrowser).
      [color=blue]
      > Is there anything i can do to fix this?[/color]

      No, the innerHTML property reports a string constructed as a normalised
      representation of the underlying DOM and any one browser will produce
      what it produces, while different browsers (and browser versions) will
      produce a different interpretation. Particularly when it comes to
      quotes, apostrophise and the case of tag names and attribute names.

      Richard.


      Comment

      • Randy Webb

        #4
        Re: body.innerHTML issue

        Vincent van Beveren wrote:
        [color=blue][color=green]
        > > bodyText transilates it into
        > > <input name=email type=text id=email>
        > >
        > > Is there anything i can do to fix this?[/color]
        >
        > You need to escape it.
        >
        > This is most easly done with regular expressions (I believe)
        >
        > bodyText = bodyText.replac e(/\"/g,"\\\"");
        >
        > should work[/color]

        That works if you already have the string. It doesn't do what the op is
        wanting to do though. Try it out.

        What the OP is wanting is to read the innerHTML and get the quoted value
        back from the browser, which it is normalizing. To get the actual text
        of it, with quotes and all, look into the HTTPRequestObje ct or the JAVA
        component listed in the FAQ


        --
        Randy
        Chance Favors The Prepared Mind
        comp.lang.javas cript FAQ - http://jibbering.com/faq/

        Comment

        • Grant Wagner

          #5
          Re: body.innerHTML issue

          Richard Cornford wrote:
          [color=blue]
          > Reed wrote:[color=green]
          > > I'm having a problem with apostrophes & quotes when
          > > using body.innerHTML.
          > >
          > > With the statement: bodyText = document.body.i nnerHTML
          > >
          > > If there was a Form object on my page such as:
          > > <input name="email" type="text" id="email">
          > >
          > > bodyText transilates it into
          > > <input name=email type=text id=email>
          > > Is there anything i can do to fix this?[/color]
          >
          > No, the innerHTML property reports a string constructed as a normalised
          > representation of the underlying DOM and any one browser will produce
          > what it produces, while different browsers (and browser versions) will
          > produce a different interpretation. Particularly when it comes to
          > quotes, apostrophise and the case of tag names and attribute names.
          >
          > Richard.[/color]

          The thing to do to fix it is to not rely on attempting to parse the
          contents of innerHTML. Instead, use the DOM accessor methods to obtain the
          properties of the elements you want.

          ie - document.getEle mentById('email '); to obtain a specific reference to
          that input, or document.getEle mentsByTagName( 'input'); to obtain a
          collection of all <input> tags, etc.

          --
          | 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

          Working...