隨着great help of Sk8erPeter我設法在Drupal上的某些內容類型的節點創建和節點更新執行JavaScript代碼現在7呼叫全球JS功能模塊從.js文件在Drupal 7
我的問題是,我可以不要使用這個模塊的js文件調用函數FB.api。它與Javascript命名空間有關嗎?從運行控制檯FB.api()函數的任何幫助工作得很好......
在此先感謝。
尼爾斯
隨着great help of Sk8erPeter我設法在Drupal上的某些內容類型的節點創建和節點更新執行JavaScript代碼現在7呼叫全球JS功能模塊從.js文件在Drupal 7
我的問題是,我可以不要使用這個模塊的js文件調用函數FB.api。它與Javascript命名空間有關嗎?從運行控制檯FB.api()函數的任何幫助工作得很好......
在此先感謝。
尼爾斯
您的意見基於...我只是看你testModule.behaviors.js
,它甚至沒有類似於我給你寫here in the other topic功能。
您當前的代碼只是這樣的:
FB.api(
'/me/shareatear:share',
'post',
{ tear: document.URL },
function(response) {
if (!response || response.error) {
alert('Error occured');
} else {
alert('done. ' + response.id);
}
});
哪裏是Drupal.behaviors
,其attach
功能我教你的?其他所有東西在哪裏? :)
它甚至不是令人驚訝的是當前的代碼輸出錯誤,因爲我覺得這個JavaScript文件包含之前甚至定義FB
對象,這樣你就直接在頭調用此代碼。
我覺得你testModule.behaviors.js
文件應該是這樣的(基於我們談論以前的代碼):
(function ($) {
Drupal.behaviors.testModule = {
doitnow: function() {
alert("A new \"tear\" content has just been added!");
// change this code to the appropriate one
FB.api('/me/shareatear:share', 'post', {
tear: document.URL
}, function (response) {
if (!response || response.error) {
alert('Error occured');
} else {
alert('done. ' + response.id);
}
});
},
attach: function (context, settings) {
try {
if (settings.testModule.tear_just_added) {
this.doitnow();
}
} catch (ex) {}
}
};
})(jQuery);
所以替換當前的內容(你只調用FB.api
沒有任何Drupal-specific behaviors「包裝」 ),並將其內容更改爲這一個。
編輯:
OK,請嘗試使用以下db_query()
更高一旦設置此模塊的重量,所以它的鉤子獲得比其它模塊的鉤子後調用。在代碼中放入這些行後,保存文件,刪除Drupal緩存,然後註釋掉相應的行!無需在每次加載頁面時都一直運行!
/**
* Implements hook_init()
* @see http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_init/7
*/
function testModule_init() {
// after putting this in your file, save it, delete cache, then COMMENT OUT THE FOLLOWING LINE!!! It should only RUN ONCE (it's enough).
db_query("UPDATE {system} SET weight = 111 WHERE type = 'module' AND name = 'testModule'");
}
hi @ Sk8erPeter,我先試着給你初始代碼。但是在這個版本中,FB()函數仍然無法加載。警報出現,但加載FB.api失敗。當我從這段代碼中只將FB.api函數複製到控制檯時,它工作正常......所以我們開始代碼太早了?以後如何啓動它? – Nils
@Nils:我編輯了我的答案,請在帖子末尾查看模塊重量變化方法。 – Sk8erPeter
@Nils:你是否設法解決這個問題? – Sk8erPeter
尼爾斯嗨!我也問了它的另一話題,但是否有調用從你的代碼開發工具的'Console'標籤此功能時,任何錯誤信息(如瀏覽器內置的東西或螢火蟲)? :)或者什麼是「錯誤」的症狀?你能告訴我們你調用這個函數的整個代碼嗎? – Sk8erPeter
@ Sk8erPeter,只是打電話doitnow()與你的榜樣警報工程完全沒有任何錯誤。不起作用的是從另一個稱爲FB.api()的模塊調用另一個函數。我可以從控制檯運行這個Fb.api函數,沒有任何錯誤。但在doitnow()函數中,它似乎是未知的。在控制檯中根據錯誤是「FB沒有定義@ http://www.share-a-tear.com/sites/all/modules/testModule/js/testModule.behaviors.js?m4zq9p:1」。 – Nils
這是我真正想要的內部doitnow()調用函數: FB.api( '/ ME/shareatear:股', '後', {淚:document.URL}, 功能(響應){ 如果{ 警報( '發生錯誤');} (響應|| response.error!)其他{ 警報('工作。'+ response.id); } }); – Nils