7

This is my code:

<script>
    function popupTest(title) {
        alert(title);
        return false;
    }
</script>

<a href="" onclick="return popupTest('This is &#039;some&#039; &quot;test&quot; string')"><span>Recommend</span></a>

Using Firefox 4 I get the error:

Error: missing ) after argument list
Source Code:
return popupTest('This is 'some' "test" string')

It's like it's decoding the HTML entities but I don't know why.

Have also tried...

<a href="" onclick="return popupTest('This is \'some\' \"test\" string')"><span>Recommend</span></a>

Which gives error:

Error: unterminated string literal
Source Code:
return popupTest('This is \'some\' \
1
  • While the answers here are correct, the proper solution would be giving the element an ID and then attaching an event handler to it using JavaScript instead of inlining an onclick attribute. Commented May 10, 2011 at 8:42

1 Answer 1

14

&#039; is HTML for '. So for the first example the HTML is parsed and the JavaScript engine is passed:

return popupTest('This is 'some' "test" string')

… and the second ' terminates the string.

On the other hand:

onclick="return popupTest('This is \'some\' \"test\" string')"

Is parsed as:

An onclick attribute with the value return popupTest('This is \'some\' \ followed by some invalid data.

You need to deal with the JavaScript first:

return popupTest('This is \'some\' "test" string')

and then escape it for HTML:

onclick="return popupTest('This is \'some\' &quot;test&quot; string')"

You would probably be better off using unobtrusive JavaScript and binding the event handlers with JavaScript instead of using intrinsic event attributes.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.