【问题标题】:Loading page jQuery won't get past page loading加载页面 jQuery 不会超过页面加载
【发布时间】:2016-05-20 23:01:23
【问题描述】:

希望您能在某些事情上有所帮助.. jQuery 和 javascript 的新手,但尝试加载封面页面,以便立即显示所有内容,但它卡住并且不会超过加载页面,但在 jsfiddle它会经过没有意义的加载页面。

这是小提琴 - http://jsfiddle.net/adeneo/Egtwx/1/

这是我的代码(相同...

 <div id="cover">LOADING</div>

 <script>

 $(window).on('load', function() {
   $("#cover").fadeOut(1000);
  });

   //jsFiddle does not fire the window onload properly, substituted with fake         load

function newW() {
  $(window).load();
}
setTimeout(newW, 100);


 </script>

这是我的脚本标签中的所有代码,也许这是冲突并导致它不起作用..?

<script>
$(window).ready(function() {
  $("#cover").fadeOut(2000);
});

//jsFiddle does not fire the window onload properly, substituted with fake      load

function newW() {
  $(window).load();
}
setTimeout(newW, 100);

$(document).ready(function() {
  //Check to see if the window is top if not then display button
  $(window).scroll(function() {
    if ($(this).scrollTop() > 100) {
      $('.scrollToTop').fadeIn();
    } else {
      $('.scrollToTop').fadeOut();
    }
  });
  //Click event to scroll to top
  $('.scrollToTop').click(function() {
    $('html, body').animate({
      scrollTop: 0
    }, 800);
    return false;
  });
});
</script>

【问题讨论】:

标签: javascript jquery


【解决方案1】:

在 Chrome 中,您必须更改设置以允许设置本地数据。

要更改此设置,请转到 Settings &gt; Privacy &gt; Content 设置,然后将 cookies 设置更改为“允许设置本地数据”。

这将解决您的浏览器的问题,但不能解决您用户的浏览器的问题。相反,您应该使用$(document),而不是$(window),因为$(document) 不受安全设置的影响。

“load”事件实际上是“ready”事件,所以如果你改变它,它就会起作用。

$(window).on("ready", function() {
    $("#cover").fadeOut(2000);
});

我通常使用这种形式,因为它更“现代”的 jQuery 风格:

$(window).ready(function() {
    $("#cover").fadeOut(2000);
});

【讨论】:

  • 不幸的是,它似乎没有解决它进行更改?
  • 啊,还是不行!尝试使用窗口和文档...嗯
  • 将我的最后一段代码粘贴到您的小提琴中(替换那里的所有 javascript),您可以看到它有效。您的应用程序中是否存在可能导致其无法工作的不同之处?
  • 是的,谢谢,但我似乎无法让它在我的身上工作......我将我所有的脚本标签添加到帖子中——也许它与其他代码发生冲突,我没有知道?你能看一下吗
  • 即使使用$(window).ready,ready 也确实是$( document ).ready( handler ),“如果在 DOM 初始化后调用 .ready(),传入的新处理程序将立即执行”这通常会触发window.onLoad 之前是一个 jQuery 事件,$(document).on( "ready", handler ),自 jQuery 1.8 起已弃用。文档:api.jquery.com/ready
【解决方案2】:

您的小提琴通过 fiddle 下拉菜单将您的代码包裹在 onload 中,这是您的 setTimeout 执行时..

您应该可以将它用于 onload 事件:

请注意,我创建了一个自定义事件以使发生的事情一目了然。

$(window).on('myload', function() {
  $("#cover").fadeOut(200);
});

function newW() {
  setTimeout(function() {
    $(window).trigger('myload');
  }, 1000);
}
window.onload = newW;

请注意,您发布的两个代码段都有些不同。

【讨论】:

  • 感谢您的回复,但我使用了您的代码,但仍然无法加载到封面屏幕:(
  • 请注意,此事件可能已经在您的页面上触发。请注意,如果该事件已经触发,$(document).ready(handler) 将立即执行。
猜你喜欢
  • 2011-04-11
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-21
  • 1970-01-01
  • 2012-11-14
相关资源
最近更新 更多