472,121 Members | 1,592 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,121 software developers and data experts.

Escaping quotes withing quotes

I have a problem of escaping quotes in javascript.

Ex:

onclick='alert( "Mister O'Hara" )'
onclick='alert( "Mister O\'Hara" )'

both gives me an error. How would I escape this?

Jul 23 '05 #1
7 21419


du*****@gmail.com wrote:
I have a problem of escaping quotes in javascript.

Ex:

onclick='alert( "Mister O'Hara" )'


onclick="alert('Mister O\'Hara')"
is one way, or use a HTML escape e.g. character reference
onclick='alert("Mister O'Hara")'

--

Martin Honnen
http://JavaScript.FAQTs.com/
Jul 23 '05 #2
du*****@gmail.com writes:
I have a problem of escaping quotes in javascript.
Nope :)
onclick='alert( "Mister O'Hara" )'
onclick='alert( "Mister O\'Hara" )'

both gives me an error. How would I escape this?


Your problem is that the outer (single-)quotes are not Javascript
quotes, but HTML quotes. It is the HTML parser that barfs over your
code, not Javascript, so you would need an HTML escape, not the
Javascript escape.

The HTML "escape" of a single quote is the entity ',
so
onclick='alert("Mister O'Hara");'

Alternatively, you could use double quotes in HTML and single in
Javascript, and then use a Javascript escape:
onclick="alert('Mister O\'Hara');"

/L
--
Lasse Reichstein Nielsen - lr*@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
Jul 23 '05 #3


Lasse Reichstein Nielsen wrote:

Your problem is that the outer (single-)quotes are not Javascript
quotes, but HTML quotes. It is the HTML parser that barfs over your
code, not Javascript, so you would need an HTML escape, not the
Javascript escape.

The HTML "escape" of a single quote is the entity &apos;,
so
onclick='alert("Mister O&apos;Hara");'


HTML 4.01 does not define an enity by the name apos, the above does not
validate therefore.
Nowadays most modern browsers support apos nevertheless but for instance
Netscape 4 does not. Thus a numeric character reference ' is safer.

--

Martin Honnen
http://JavaScript.FAQTs.com/
Jul 23 '05 #4
Thanks for clarifying that. Using onclick="alert('Mister O\'Hara');"
would solve the problem if the user use ' (single quote), but they can
type in " (double quote). In that case, we have the same problem.

Jul 23 '05 #5
Lasse Reichstein Nielsen wrote:
du*****@gmail.com writes:
I have a problem of escaping quotes in javascript.


Nope :)
onclick='alert( "Mister O'Hara" )'
onclick='alert( "Mister O\'Hara" )'

both gives me an error. How would I escape this?


[...] It is the HTML parser that barfs over your code, not
Javascript, [...]


That is not entirely true. The markup -- dare I say "tag soup" --
parser does what it can to correct this invalid markup which
results in

onclick='alert( "Mister O'
onclick='alert( "Mister O\'

But then the script engine is passed this code when the event fires,
and so:

| Error: Unterminated string literal
|
| alert( "Mister O
| ------------------^
| alert( "Mister O\'
| --------------------^
PointedEars
--
When the power of love overcomes the love
of power, the world will know peace.
-- Jimi Hendrix
Jul 23 '05 #6
> Thanks for clarifying that. Using onclick="alert('Mister O\'Hara');"
would solve the problem if the user use ' (single quote), but they can
type in " (double quote). In that case, we have the same problem.


How is the user inputting "Mister O'Hara"? Maybe you can assign this to a
JavaScript variable. I don't think there is any problem using both single
and double quotes inside the variable. Example (in the body code)-- I
tested this in IE 6.0:
<script type="text/javascript">
var myVar = 'Mister O\'Hara says, "Hi."';
</script>
<p onclick='alert(myVar)'>Click here.</p>
...Jim in Dallas...
Jul 23 '05 #7
du*****@gmail.com wrote:
Thanks for clarifying that. Using onclick="alert('Mister O\'Hara');"
would solve the problem if the user use ' (single quote), but they can
type in " (double quote). In that case, we have the same problem.


If the string data is provided by user input, I doubt you
have to care about that unless you misuse the eval() method.
PointedEars
Jul 23 '05 #8

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

4 posts views Thread by sankofa | last post: by
4 posts views Thread by Stefan Richter | last post: by
2 posts views Thread by cesco | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.