2009-12-18 75 views
2

我有一个应用程序,我需要在两种形式的BODY标签的onLoad事件中调用一些JS。但是,我找不到如何仅为它们修改标签。有人知道吗?添加到<body> CakePHP应用程序的标签

弗兰克

+0

你有app/views/layouts/default.ctp的定义吗?如果不是,Cake使用Cake//中的一个。你可以添加你自己的布局,如果你愿意,可以在那里添加你的onload。这是一个链接:http://www.geekdaily.net/2007/07/27/javascript-windowonload-is-bad-mkay/。 – Wayne 2009-12-19 04:08:08

回答

6

inkedmn肯定已经为这种情况下,正确的答案,但在一般情况下,你可以 “一手资料达” 这样的:

(在视图/控制器/ view.ctp)

$this->set('bodyAttr', 'onload="something"'); 

(在视图/布局/ default.thtml中)

<?php 
    if (isset($bodyAttr)) { 
     $bodyAttr = " $bodyAttr"; 
    } else { 
     $bodyAttr = null; 
    } 
?> 
<body<?php echo $bodyAttr; ?>> 

我经常使用这样的额外类添加到“顶级元素”:

<?php 
    if (!isset($docClass)) { 
     $docClass = null; 
    } 
?> 
<div id="doc" class="<?php echo $docClass; ?>"> 
+0

我更喜欢在控制器中设置值。 – Wayne 2009-12-19 04:05:12

+0

对于像我不喜欢的类,因为它们纯粹是视图层相关的。 – deceze 2009-12-19 04:39:04

5

你并不需要修改的身体标记了Javascript执行时,页面加载。你可以只在您的布局在适当情况下是这样的:

(jQuery的)

$("body").load(
    function(){ 
     // do stuff when the body element is loaded. 
    } 
); 

或者,如果你想拥有的代码执行时的document.ready事件触发:

$(function(){ 
     // do stuff when the document is ready 
    } 
); 

或者,如果你不想使用jQuery,你可以做这样的事情:

function doStuff(){ 
    // whatever you want to happen when the load completes 
} 

window.onload = dostuff; 

祝你好运 - 并请澄清你的问题,如果这个答案不令人满意。

0

我做到以下几点:

我们在我的身上

<body <? = (isset ($ bodyLoad)? 'onload = \''. $ bodyLoad.' \'',''); ?> > 

早在我的[动作]申请$ bodyLoad。 CTP,我做了以下:

<? php $ this-> set ('bodyLoad', 'field.focus();');?> 

如果你想你也可以把这个代码放在控制器。

祝你好运

相关问题