Re: formencode.htmlfill.FillingParser chokes on javascript HTML

Ian Bicking <[email protected]> Wed, 18 Nov 2009 15:47:59 -0600
Newsgroups gmane.comp.python.formencode
Message-ID <[email protected]>
\074 could also be substituted for <

On Wed, Nov 18, 2009 at 3:45 PM, Aston Motes <[email protected]> wrote:
> Another trick might be to split your tag with concatenated strings so
> that it doesn't look like HTML. I couldn't (quickly) make htmlfill
> break on a simple example, but maybe you could try something like
> this:
>
>     function hover(obj, text) {$(obj).append("<" + "span class=flag>
> (" + text + ")<" + "/span>");}
>
>    - Aston
>
> On Wed, Nov 18, 2009 at 1:23 PM, Roy Hyunjin Han
> <[email protected]> wrote:
>>
>> On 11/18/2009 03:49 PM, Ian Bicking wrote:
>> > On Wed, Nov 18, 2009 at 2:40 PM, Roy Hyunjin Han
>> > <[email protected]>  wrote:
>> >
>> >> Hi,
>> >>
>> >> I am using formencode.htmlfill() to render a form, but the function is inadvertently parsing my javascript code.  Specifically, formencode.htmlfill.FillingParser raises the following exception
>> >>
>> >>      HTMLParseError: malformed start tag
>> >>
>> >> when it encounters the following jQuery code
>> >>
>> >>      function hover(obj, text) {$(obj).append("<span class=flag>  (" + text + ")</span>");}
>> >>
>> >> and does not raise the exception after I remove the offending code.  Perhaps we should strip javascript before htmlfill?
>> >>
>> > Well... what needs to happen is everything between<script>  and
>> > </script>  should be treated as text, but HTMLParser doesn't understand
>> > that.
>> >
>> > I *think* it would work fine to do:
>> >
>> >    function hover(obj, text) {$(obj).append("&lt;span class=flag&gt; ("
>> > + text + ")&lt;/span&gt;");}
>> >
>> > Which is actually something we could do automatically with a regex.
>> > Unfortunately right now I can't reproduce, I put a test at the bottom
>> > here: http://bitbucket.org/ianb/formencode/src/tip/tests/test_htmlfill.py
>> > -- but it passes.Thanks for your suggestion!
>> >
>> >
>> Thanks for your suggestion!
>>
>> Escaping the brackets does fix the problem with htmlfill(), but it is
>> also causing the browser to interpret the brackets literally, so the
>> text prints but is not rendered as a span element.
>>
>> I think for the meantime I will have to do without that bit of
>> javascript on the page, because I need to use htmlfill().
>>
>> RHH
>>
>> ------------------------------------------------------------------------------
>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
>> trial. Simplify your report design, integration and deployment - and focus on
>> what you do best, core application coding. Discover what's new with
>> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
>> _______________________________________________
>> FormEncode-discuss mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/formencode-discuss
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> FormEncode-discuss mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/formencode-discuss
>



-- 
Ian Bicking  |  http://blog.ianbicking.org  |  http://topplabs.org/civichacker

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
FormEncode-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/formencode-discuss