-1

我正在开发一个个人网站以扩展我的 jQuery 知识。我用 PHP 编写了这个页面,它工作正常,没有控制台错误: http ://sallibert.com/apps/notes/notes.php

但是,当我在索引文件中使用包含调用它时,动画会在加载时卡住: http ://sallibert.com/index.php#!notes

JS链接很好,没有坏链接。

我尝试了这些不同的解决方案,但都没有奏效:

  • 将 JS 链接放在正文中
  • 替换$('document').ready(function(){jQuery(document).ready(function(){
  • jQuery.noConflict();

有没有人有任何想法来修复这个错误?谢谢您的帮助!

编辑 :

我已经更新了上面的链接,你现在可以查看。我在 Firefox 上没有错误日志,但现在在 chrome 上,我有两个。我尝试解决它们:

未捕获的类型错误:无法调用未定义的方法“toLowerCase”我认为第一个错误与此有关。

Uncaught TypeError: Cannot read property 'style' of null 首先,我使用 html 加载附加 html,然后,当页面加载时,应用一些 JS:

$(document).ready(function(){
    ...
$('#horloge .app_logo').append('<img class="aigfix" id="aigS" src="img/aigS.png"     alt="" style="transform: rotate(314784deg);"><img class="aig" id="aigM" src="img/aigM.png" alt="" style="transform: rotate(5246deg);"><img class="aighfix" id="aigH" src="img/aigH.png" alt="" style="transform: rotate(437deg);">');
....
});

window.onload = function() // wait before load
   {
      var d    = new Date();
      var time = d.getSeconds() + 60 * d.getMinutes() + 3600 * d.getHours();

      var aigS = document.getElementById('aigS');
      var aigM = document.getElementById('aigM');
      var aigH = document.getElementById('aigH');

      aigS.style.MozTransform    = 'rotate(' + (time * 6) + 'deg)';
      aigS.style.WebkitTransform = 'rotate(' + (time * 6) + 'deg)';
      aigS.style.OTransform      = 'rotate(' + (time * 6) + 'deg)';
      aigS.style.msTransform     = 'rotate(' + (time * 6) + 'deg)';
      aigS.style.transform       = 'rotate(' + (time * 6) + 'deg)';
      aigM.style.MozTransform    = 'rotate(' + Math.round(time / 10) + 'deg)';
      aigM.style.WebkitTransform = 'rotate(' + Math.round(time / 10) + 'deg)';
      aigM.style.OTransform      = 'rotate(' + Math.round(time / 10) + 'deg)';
      aigM.style.msTransform     = 'rotate(' + Math.round(time / 10) + 'deg)';
      aigM.style.transform       = 'rotate(' + Math.round(time / 10) + 'deg)';
      aigH.style.MozTransform    = 'rotate(' + Math.round(time / 120) + 'deg)';
      aigH.style.WebkitTransform = 'rotate(' + Math.round(time / 120) + 'deg)';
      aigH.style.OTransform      = 'rotate(' + Math.round(time / 120) + 'deg)';
      aigH.style.msTransform     = 'rotate(' + Math.round(time / 120) + 'deg)';
      aigH.style.transform       = 'rotate(' + Math.round(time / 120) + 'deg)';

      setInterval(function() {
         time++;
            aigS.style.MozTransform    = 'rotate(' + (time * 6) + 'deg)';
            aigS.style.WebkitTransform = 'rotate(' + (time * 6) + 'deg)';
            aigS.style.OTransform      = 'rotate(' + (time * 6) + 'deg)';
            aigS.style.msTransform     = 'rotate(' + (time * 6) + 'deg)';
            aigS.style.transform       = 'rotate(' + (time * 6) + 'deg)';
            aigM.style.MozTransform    = 'rotate(' + Math.round(time / 10) + 'deg)';
            aigM.style.WebkitTransform = 'rotate(' + Math.round(time / 10) + 'deg)';
            aigM.style.OTransform      = 'rotate(' + Math.round(time / 10) + 'deg)';
            aigM.style.msTransform     = 'rotate(' + Math.round(time / 10) + 'deg)';
            aigM.style.transform       = 'rotate(' + Math.round(time / 10) + 'deg)';
            aigH.style.MozTransform    = 'rotate(' + Math.round(time / 120) + 'deg)';
            aigH.style.WebkitTransform = 'rotate(' + Math.round(time / 120) + 'deg)';
            aigH.style.OTransform      = 'rotate(' + Math.round(time / 120) + 'deg)';
            aigH.style.msTransform     = 'rotate(' + Math.round(time / 120) + 'deg)';
            aigH.style.transform       = 'rotate(' + Math.round(time / 120) + 'deg)';
      }, 1000);
   }

php包含代码是:

<?php
    $appid = strtolower($_GET['appid']);
    if($appid && file_exists('apps/'.$appid.'/'.$appid.'.php')){
        header('Location: apps/'.$appid.'/'.$appid.'.html');
    }
?>

Update2:我刚刚看到文件夹中的应用程序未定义。我使用数组调用它们:$apps[1] = Array('Maps', Array('CV',Array('Complet','Expériences','Compétences','Diplomes','Autres','Rech' erche')), '消息', ... ); 我已经解决了 Uncaught TypeError: Cannot call method 'toLowerCase' of undefined。但它并没有解决主要问题,笔记应用程序的错误负载。

谢谢您的帮助!

4

1 回答 1

0

window.onload可能会在之前执行$(document).ready。如果您使用一种类型的 onload 事件,您应该坚持使用它而不是混合它们。也尽量不要期望 document.ready 事件以特定顺序触发,如果您需要一些级联事件,则应该触发自己的事件:

//declare a custom event
$(document).on('myevent', function(e){

});

// trigger a custom event
$(document).trigger('myevent');

您应该将代码从window.loadjquery 就绪函数中移出。

日期

而不是你的公式,你可能更喜欢new Date().getTime() / 1000

小写错误

plugins.js(第 75 行)中的更改:

cache = rows.map(function(){
    return $(this).children('.search_str').html().toLowerCase();
});

至 :

cache = rows.map(function(){
    var el = $(this).children('.search_str');
    return el?el.html().toLowerCase():"";
});
于 2013-08-26T08:59:52.790 回答