2011-04-12 82 views
4

我已经将JavaScript代码添加到了我的Drupal 7主题,但由于它的预期运行失败,因为当我的函数被触发时,css没有正确应用。
所以我试了一个最小的实现来检查发生了什么。在页面完全渲染后加载JavaScript

jQuery(document).ready(function($) { 

     alert("Start"); 

    } 

alert()页面完全加载(即所有的标题缺失)之前被触发。 我该如何预防?

+0

这个问题似乎与Drupal没有关系。 – kiamlaluno 2011-04-12 21:20:33

+0

它与Drupal有关。这是一个Drupal站点,JQuery是自6.x以来的Drupal核心的一部分,这是关于Drupal的行为。 – 2011-04-12 21:44:40

+2

这个问题显然与Drupal相关,而Drupal处理“页面加载”事件的方式并不是通常的jQuery方式(请参阅业余咖啡师的回答)。请将它移回Drupal答案。 – 2011-04-13 06:09:28

回答

10

为了执行一个脚本后,一切都满载你想:

$(window).load(function(){ 
    alert('hello'); 
}); 

jQuery.ready()尽快执行的DOM准备好了,这是外部资源已加载通常前。

+2

这样做的“Drupal方法”是使用Drupal的行为,这个例子是一个不好的做法。请阅读http://drupal.org/node/756722中的行为部分。 – 2011-04-12 21:45:29

+2

我使用Drupal行为(这就是为什么我在Drupal Stack Exchange上提交这个问题),但实际上我的问题实际上与缺少的窗口负载有关。 – pasine 2011-04-12 22:02:18

+0

不要1)使用$没有包装它在外部的上下文,2)使用jQuery(window).load(...),但Drupal.behaviors。见业余咖啡师的答案中的链接。 – 2011-04-13 06:06:56

3

阅读关于Drupal 7 JavaScript API here。你想关注行为部分。在您的示例中,行为与您尝试做的事情相同,但是,在加载Drupal页面时,它所做的第一件事情之一是实例化Drupal对象。该对象通过行为属性被每个模块扩展。当您在文档准备好时使用Drupal行为而不是标准JQuery时,您可以在JavaScript函数中访问由其他模块定义的所有属性和方法。

这些教程(12)适用于Drupal 6,但它们会为您提供有关Drupal行为的良好解释和想法。

+0

OP请求一旦加载了外部资源(这里是CSS)就运行JavaScript。行为在这里没有帮助。由于OP也使用jQuery(document).ready作为非工作代码的示例,因此此答案仍然相关。 – 2014-02-05 19:58:21