Connecting Tech Pros Worldwide Forums | Help | Site Map

body.innerHTML issue

Reed
Guest
 
Posts: n/a
#1: Jul 23 '05
I'm having a problem with apostrophes & quotes when using body.innerHTML.

With the statement: bodyText = document.body.innerHTML

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
Guest
 
Posts: n/a
#2: Jul 23 '05

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.replace(/\"/g,"\\\"");

should work



Richard Cornford
Guest
 
Posts: n/a
#3: Jul 23 '05

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


Randy Webb
Guest
 
Posts: n/a
#4: Jul 23 '05

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.replace(/\"/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 HTTPRequestObject or the JAVA
component listed in the FAQ


--
Randy
Chance Favors The Prepared Mind
comp.lang.javascript FAQ - http://jibbering.com/faq/
Grant Wagner
Guest
 
Posts: n/a
#5: Jul 23 '05

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.innerHTML
> >
> > 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.getElementById('email'); to obtain a specific reference to
that input, or document.getElementsByTagName('input'); to obtain a
collection of all <input> tags, etc.

--
| Grant Wagner <gwagner@agricoreunited.com>

* Client-side Javascript and Netscape 4 DOM Reference available at:
*
http://devedge.netscape.com/library/...ce/frames.html

* Internet Explorer DOM Reference available at:
*
http://msdn.microsoft.com/workshop/a...ence_entry.asp

* 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


Closed Thread