我試圖將javascript library for drag&drop on tables整合到我的自定義Drupal模塊的一個頁面中。我已經包含使用drupal_add_js
的js文件,但我不知道如何初始化它。Drupal中的Javascript「<body onload = ...>」
,一個初始化函數應該叫像
<body onload="REDIPS.drag.init()">
我會怎麼做,在Drupal的該庫狀態的文檔?或者讓Drupal有一些更好的初始化腳本的方法?
我試圖將javascript library for drag&drop on tables整合到我的自定義Drupal模塊的一個頁面中。我已經包含使用drupal_add_js
的js文件,但我不知道如何初始化它。Drupal中的Javascript「<body onload = ...>」
,一個初始化函數應該叫像
<body onload="REDIPS.drag.init()">
我會怎麼做,在Drupal的該庫狀態的文檔?或者讓Drupal有一些更好的初始化腳本的方法?
Drupal對此有自己的機制,涉及將一個屬性添加到Drupal.behaviors
。看到這個頁面:http://drupal.org/node/205296
Drupal.behaviors.redipsDragBehavior = function() {
REDIPS.drag.init();
};
從鏈接頁面:當 的DOM加載
定義爲 Drupal.behaviors任何房產函數將被調用。
你可以嘗試添加在同一功能的另一drupal_add_js調用作爲您其他add_js:
drupal_add_js('REDIPS.drag.init();','inline','header',true);
最後一個參數「真」推遲腳本的執行。 我希望能以某種方式提供幫助!
謝謝。我懷疑有一種Drupal方式,但我找不到它。 – 2010-08-25 15:42:09
不知道Drupal的JavaScript的東西。這很好理解。 – jergason 2010-08-26 18:57:23
如果REDIPS.drag.init()沒有,您應該添加自己的檢查以避免多次初始化。每次通過JavaScript將元素添加到頁面時,都會調用Behaviors函數,而不僅僅是在頁面加載時。類似於Drupal.behaviors.redipsDragBehavior = function(){if(!argument.callee.init){ REDIPS.drag.init(); argument.callee.init = TRUE; }}; – 2010-08-27 13:14:16