On Wed, Dec 16, 2009 at 11:55 AM, Ross Mellgren <dri...@gmail.com> wrote:

> I was diagnosing some incorrect HTML in our application using Lift,
> and I found a strange behavior of head merging (I assume) when you
> emit a <head> tag into a <head> tag from the snippet. The code speaks
> better than I do about this:
>
> ...
> object Dialog extends DispatchSnippet {
>     val standardDialogOptions: JsObj = JsObj(
>         "autoOpen"  -> false,
>         "bgiframe"  -> true,
>         "modal"     -> true,
>         "resizable" -> false
>     )
>
>     val dispatch: DispatchIt = {
>         case "head" => renderHead
>         case "render" => render
>     }
>
>     def renderHead(ns: NodeSeq): NodeSeq =
>         <head>{ Script { JsCrVar("pxStandardDialogOptions",
> Dialog.standardDialogOptions) } }</head>
> ...
> }
>
>
>         LiftRules.snippetDispatch.append {
> ...
>             case "Dialog"           => Dialog
> ...
>         }
>
>
> <lift:surround with="default" at="content">
>     <head>
>         <title>Email Editor</title>
>         <lift:Dialog.head />
>     </head>
> </lift:surround>
>
>
> I agree I'm doing the wrong thing here -- the <lift:Dialog.head /> tag
> rightly should be outside of the head block, or the snippet should not
> emit <head>. However, the resulting behavior is funny (certainly more
> funny than I'd expect):
>
>
> <html xmlns:lift="http://liftweb.net/"; xmlns="http://www.w3.org/1999/xhtml
> ">
> <head>
> ...
> <title>Email Editor</title>
>
>
> <script type="text/javascript">
> // <![CDATA[
> var pxStandardDialogOptions = {"autoOpen": false, "bgiframe": true,
> "modal": true, "resizable": false};
> // ]]>
> </script>
>
>
> <head><script type="text/javascript">
> // <![CDATA[
> var pxStandardDialogOptions = {"autoOpen": false, "bgiframe": true,
> "modal": true, "resizable": false};
> // ]]>
> </script></head>
>
>
> </head>
> ...
> </html>
>
>
> Ideally I'd like this to "just work" so that it doesn't matter
> precisely where the snippet is called, though it would be some special
> magic just to work around an erroneous case. But, the behavior that
> does happen seems odd, duplicating the markup inside the <head>?
>
> Should I file a bug? Just smile and nod?
>

If we had to recursively check all the <head> tags for <head> tags, that
would significantly increase the overhead of the rewrite phase.  I would
suggest using the new Helpers.stripHead() call to remove <head> tags from
stuff you already know is in a <head> tag.


>
> -Ross
>
>
>
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=en.
>
>
>


-- 
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Surf the harmonics

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en.


Reply via email to