2014年8月6日 星期三

Yii2 registerJs

registerJs 可以用來插入 script,並設定插入位置、執行時機。

registerJs( $js, $position, $identified_name );

$js : 放入 script

$position :

有五種 : POS_HEAD、POS_BEGIN、POS_END、POS_READY、POS_LOAD

POS_HEAD:放在 <head> 和 </head> 之間

POS_BEGIN:放在 <body> 的一開始

                           ex : <body>
                                      <script type="text/javascript">
                                          ...
                                      </script>

                                      HTML....
                                  </body>

POS_END:放在 <body> 的最後 ( </body> 前 )

                           ex : <body>
                                      HTML....

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

POS_READY:測試時,發現放的位置和 POS_END 一樣

                            但所設定的 script 會放在 jQuery(document).ready(fuction(){ ... }); 裡

                           ex : <body>
                                      HTML....

                                      <script type="text/javascript">
                                         
                     jQuery(document).ready(function () {
                         ...
                     });
                                      </script>
                                  </body>

                           ready : 等到 HTML 的 tag 都產生後才執行 script,因為 script 裡面可能會有想

                                       要抓取 tag、對 tag 做設定,所以要等 tag 產生,否則 script 在執行時

                                       會有問題 。


POS_LOAD:測試時,發現放的位置和 POS_END 一樣

                          但所設定的 script 會放在 jQuery(window).load(fuction () { ... }); 裡

                           ex : <body>
                                      HTML....

                                      <script type="text/javascript">
                                         
                     jQuery(window).load(function () {
                         ...
                     });
                                      </script>
                                  </body>

                           load : 會等到所有網頁的資源都下載完後才執行 script,因為 scirpt 裡面可能

                                     會有想要抓取這些資源的資訊,所以要等這些資源下載完,否則 script

                                     在執行時會有問題。

                                     資源:ex : 圖片、flash、iframe

$identified_name : 

設定這組註冊 script 的名稱,預設為 null。如果有兩個註冊的名稱相同,後面的會覆蓋前面的

script。



使用前:

regitserJs 是放在 yii\web\View 裡面,如果要方便使用的話,可以先

use yii\web\View;

之後就可以 $this->registerJs( ... );


使用範例:

use yii\web\View;

$this->registerJs(

          "alert( "registerJs test" );" ,

          POS_HEAD,

          null
);

沒有留言:

張貼留言