简体   繁体   中英

How to correctly include javascript code in chameleon/zpt template (pyramid)?

I'm trying to embed some code between < script > < /script > tags, pyramid however doesn't like it and gives me

ExpatError: not well-formed (invalid token)

Probably because i have && in my code. I tried using &amp; instead, but then it didn't get interpreted in the browser.

The same thing happens when i try to put it in CDATA block.

When I move the code to a separate js file it works. I'd like to keep it in the same file for now, just to enable quick corrections.

So, how should I do it?

EDIT:

I get the same error even for templates as simple as this one:

<html
    xmlns:tal="http://xml.zope.org/namespaces/tal"
    xmlns:metal="http://xml.zope.org/namespaces/metal">
    <head>
    </head>
    <body>
        <span onclick="alert(true && false);">test</span>
    </body>
 </html>

我认为你应该把&&(即HTML实体代码的两倍)。

This should work:

<script type="text/javascript">
    //<![CDATA[
        // my javascript
    //]]>
</script>

Have you tried adding a type attribute to your script tag?:

<script type="text/javascript">
...
</script>

It looks like xhtml issue, as w3c validator reported the same error.

I was thinking if there's a switch to change the document type parsed by chameleon to html, but then it wouldn't be possible to include tal and metal namespaces.

Hence it is expected behavior

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM