脚本后如何运行事件?

时间:2018-10-15 15:32:39

标签: jquery

在加载所有脚本后如何运行事件?我的意思是:

$('body').attr('onload', 'Scrollbar()');

我仅在加载所有脚本后才尝试运行此事件

<body onload="Scrollbar()">

我的脚本像这样在文档底部的 / body 标记之前

    <script src="/js/scripts.js"></script>
</body>

我尝试了更多,对我也不起作用

$(document).ready(function() { ... });
$(window).on('load', function() { ... });

可以这样做吗?

编辑

Scrollbar()函数:

function Scrollbar(){new SmoothScroll(document,65,15)}function SmoothScroll(o,n,t){o==document&&(o=document.documentElement||document.body.parentNode||document.body);var i=!1,a=o.scrollTop;function e(e){e.preventDefault();var t=e.delta||e.wheelDelta;void 0===t&&(t=-e.detail),t=Math.max(-1,Math.min(1,t)),a+=-t*n,a=Math.max(0,Math.min(a,o.scrollHeight-o.clientHeight+15)),i||m()}function m(){i=!0;var e=(a-o.scrollTop)/t;o.scrollTop+=e,.0<Math.abs(e)?d(m):i=!1}o.addEventListener("mousewheel",e,!1),o.addEventListener("DOMMouseScroll",e,!1);var d=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(e,20)}}

jsFiddle

1 个答案:

答案 0 :(得分:0)

您当前的代码无效:

$(window).on('load', function() {
    $('body').attr('onload', 'Scrollbar()');
});

您要在整个页面加载后向正文中添加一个onload属性,因此由于已经触发了正文onload,因此该属性将不起作用... 要解决此问题,请使用以下代码:

$(window).on('load', function() {
     Scrollbar();
});

它在页面加载后立即执行Scrollbar()$(document).ready()也应该做得很好。