You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Martin Grigorov (JIRA)" <ji...@apache.org> on 2011/03/03 09:23:36 UTC

[jira] Commented: (WICKET-3420) javascript with a less than character ("<") fails to execute when added through a header contribution in ajax response

    [ https://issues.apache.org/jira/browse/WICKET-3420?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13001907#comment-13001907 ] 

Martin Grigorov commented on WICKET-3420:
-----------------------------------------

https://developer.mozilla.org/en/Writing_JavaScript_for_XHTML recommends to use CDATA for cases like this one instead of XML comments, otherwise XHTML will not work.
They also show the same for <style type="text/css"> - otherwise CSS selector can break the application the same way.

> javascript with a less than character ("<") fails to execute when added through a header contribution in ajax response
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-3420
>                 URL: https://issues.apache.org/jira/browse/WICKET-3420
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket-core
>    Affects Versions: 1.4.15
>         Environment: Validated this bug on my dev environment: Windows 7 64 bit using Firefox 4.0beta10 and Chrome 8.
>            Reporter: Randy Schnedler
>            Assignee: Juergen Donnerstag
>            Priority: Minor
>              Labels: ajax, header-contribution, javascript, wicket-ajax.js
>         Attachments: WICKET-3420.patch, myproject.rar
>
>
> This is adapted from a wicket users post I made (links are to the same thread in two archive systems):
> http://markmail.org/search/?q=wicket%20users%20wicket-ajax.js#query:wicket%20users%20wicket-ajax.js+page:1+mid:rfts3ar3upffhbbt+state:results
> http://mail-archives.apache.org/mod_mbox/wicket-users/201102.mbox/%3CAANLkTi=EkmTA0RnA+GyJE-CQWmkCxRLsjp+z8jwv-Aw9@mail.gmail.com%3E
> The problem:  I have a panel with this:
>     <wicket:head>
> 	<script>
> 		if (someVariable < 0) {
> 			someVariable = 0;		
> 		}
> 	</script>
>     </wicket:head>
> This script fails to execute when the panel is loaded by ajax.  If I replace the less than character "<" with equals "==", then it executes (but of course, this is not what I need).
> I tested this in Firefox 4.0b10 and Chrome 8.
> After some debugging, it seems to me that this needs to be corrected in wicket-ajax.js. The header contribution is sent to the browser inside of a CDATA section so the "<" character arrives to javascript intact. However, in parsing the script tag, the "<" seems to signal the beginning of an HTML tag that then is considered malformed.
> Possible workarounds for apps:
>  - Invert the logic so a greater-than is used. In my example, this would be: "if (0 > someVariable) {"
>  - Put the code into a separate JS file (the downside is it requires another network hop from the browser)
>  - Embed the script in <wicket:panel> rather than <wicket:head> (the disadvantage is the script will be re-sent with the panel content when the panel is re-used on the same page)

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira