2009-12-18 73 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();');?> 

如果你想你也可以把這個代碼放在控制器。

祝你好運

相關問題