窗口加载后的触发功能

时间:2014-09-30 05:48:24

标签: jquery smooth-scrolling

我的smoothscroll插件无法正常工作,因为图像在滚动开始之前尚未完成加载。我试图将hashchange函数包装在窗口加载函数中,但它似乎没有等待窗口到加载。

编辑: 它不起作用,因为在页面滚动之前页面的高度不正确。

$(document)
.on('click', 'a[href*="#"]', function() {
if ( this.hash && this.pathname === location.pathname ) {
$.bbq.pushState( '#/' + this.hash.slice(1) );
return false;
}
})

$(window).load(function() {


$(window).bind('hashchange', function(event) {
  var tgt = location.hash.replace(/^#\/?/,'');
  if ( document.getElementById(tgt) ) {
    $.smoothScroll({scrollTarget: '#' + tgt});
  }
 });

$(window).trigger('hashchange');
});

任何帮助都会很棒。

4 个答案:

答案 0 :(得分:1)

您还可以使用我经常使用的https://github.com/alexanderdickson/waitForImages插件 - 特别是如果页面加载了ajax

答案 1 :(得分:0)

我过去遇到过类似的问题。在弹出窗口中加载图像之前执行print命令的位置。可能它可以帮助你

[Js Fiddle Link] [1]

[1]: http://jsfiddle.net/Q5Xc9/685/

答案 2 :(得分:-1)

您可以将功能包装在

$( document ).ready(function() {
    //all your code here
});

http://learn.jquery.com/using-jquery-core/document-ready/

答案 3 :(得分:-1)

我认为你可以使用 body 元素的 onLoad 事件。在此活动中,所有HTML标记以及图像都会加载到bowser上。

function onload()
{
  // your logic here

}

希望它有所帮助...

注意:HTML文档只能有一个 onload()方法实现。

供参考:http://www.dotnet-tricks.com/Tutorial/aspnet/D719120612-Difference-between-document.ready-and-window.onload-or-pageLoad.html