web2py: <body>-Tag Атрибуты

Мне нужно указать атрибут для тега body следующим образом:

<body onresize="window.location.href=window.location.href">

Конечно, я могу сделать это в соответствующем представлении. Но тогда у меня есть два открывающих тега body в результирующем HTML-коде. HTML-код работает, но не соответствует заданным стандартам.

Таким образом, мой вопрос заключается в том, что, если есть способ указать атрибут, он будет включен в сгенерированный тег body ответа.

Спасибо за любую поддержку!

2 ответа

Решение

В представлении "layout.html" вы можете сделать что-то вроде этого:

<body{{=XML(' onresize="window.location.href=window.location.href"') if response.resizable_body else ''}}>

Затем в модели или контроллере вы можете сделать:

response.resizable_body = True

Или в представлении (обратите внимание, resizable_body атрибут устанавливается перед расширением макета):

{{response.resizable_body = True}}
{{extend 'layout.html'}}

Нет необходимости явно устанавливать response.resizable_body в False в любой момент, как response.resizable_body будет просто None по умолчанию (response это Storage объект, поэтому, когда вы пытаетесь получить доступ к несуществующему атрибуту, он просто дает None).

Хорошо, я нашел решение... все легко, когда вы думаете;-)

Поскольку тег body происходит от расширения "layout.html" {{extended 'layout.html'}}, здесь можно изменить тег body. Если для всех представлений нет необходимости иметь атрибут onresize, для этой специальной цели можно использовать "layout.html", например "layout-onresize.html".

Другие вопросы по тегам