Javascript 从Drupal7中的module.JS文件调用全局JS函数

Javascript 从Drupal7中的module.JS文件调用全局JS函数,javascript,drupal,drupal-7,Javascript,Drupal,Drupal 7,在Drupal7中,我成功地在节点创建和特定内容类型的节点更新上执行Javascript代码 我现在的问题是,我无法使用此模块js文件调用函数FB.api。它是否与Javascript名称空间有关?从控制台运行FB.api()函数可以正常工作 提前感谢您的帮助 零根据您的评论。。。我只是在看你的,它看起来和我写给你的函数都不一样 您当前的代码仅如下所示: FB.api( '/me/shareatear:share', 'post', { tear: document.UR

在Drupal7中,我成功地在节点创建和特定内容类型的节点更新上执行Javascript代码

我现在的问题是,我无法使用此模块js文件调用函数FB.api。它是否与Javascript名称空间有关?从控制台运行FB.api()函数可以正常工作

提前感谢您的帮助


根据您的评论。。。我只是在看你的,它看起来和我写给你的函数都不一样

您当前的代码仅如下所示:

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
函数在哪里?我之前向您展示了它的
attach
函数?其他东西都在哪里?:)
当前代码输出错误也就不足为奇了,因为我认为在定义
FB
对象之前就包含了这个JavaScript文件,这样您就可以在头中直接调用这个代码了

我认为您的
testModule.behaviors.js
文件应该是这样的(基于我们之前讨论的代码):

因此,请替换您当前的内容(您只调用
FB.api
,不使用任何“包装器”),并将其内容更改为此内容


编辑:

好的,尝试使用下面的
db\u 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'");
}

嗨,尼尔斯!我在另一个主题中也问了这个问题,但是当从开发者工具的
控制台
选项卡中的代码调用这个函数时(比如Chrome的内置工具或Firebug),是否有任何错误消息或者“错误”的症状是什么?你能告诉我们你在哪里调用这个函数的全部代码吗?@Sk8erPeter,用你的示例警报调用doitnow()就可以完美地工作,没有任何错误。不起作用的是从另一个名为FB.api()的模块调用另一个函数。我可以从控制台运行这个Fb.api函数,没有任何错误。但是在doitnow()函数中,它似乎是未知的。控制台中相应的错误是“FB未定义@”。这是我实际上想要在doitnow()中调用的函数:FB.api('/me/shareatear:share','post',{tear:document.URL},函数(response){if(!response | | response.error){alert('error occurrent');}else{alert('worked'.+response.id);}}});您好@Sk8erPeter,我先尝试了您的初始代码函数仍然没有加载。警报出现,但加载FB.api失败。当我从这段代码复制FB.api函数到控制台时,它工作正常…所以我们启动代码太早了?以后如何启动?@Nils:我编辑了我的答案,请参阅文章末尾的模块权重更改方法。
/**
 * 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'");
}