我正在建立一个主要使用画布的网站,但是唯一涉及的画布是水平绘制的线,该线长约13000像素。

当用户滚动我的窗口时,然后沿着画布路径Example水平滚动。

我注意到在Firefox(版本6.0.2)上我的文档无法滚动。在我的控制台中,我收到类似(NS_ERROR_OUT_OF_MEMORY)的内容。

谷歌搜索之后,我发现这可能是潜在的内存泄漏?这是如何工作的,是因为我编写代码的方式吗?还是这是浏览器/硬件问题?

我正在重新调整窗口大小等功能,我很好奇这是否有任何imapct?

// Initate the plugin

$(window).resize(function() {
    if(this.resizeTO) clearTimeout(this.resizeTO);
    this.resizeTO = setTimeout(function() {
        $(this).trigger('resizeEnd');
    }, 500);
});

$(window).bind('resizeEnd', function() {
    $("#path").scrollPath({drawPath: true, wrapAround: false});
});

$("#path").scrollPath({drawPath: true, wrapAround: false});




        $(document).ready(init);

            $('.wrapper').css({'top' : '0px','left' : '0px'});
            $('.wrapper > div').css({'height' : + $(window).height() +'px'});

        function init() {


        // Set window height and width variables
            var windowheight = $(window).height();
            var windowwidth = $(window).width();

            // Check monitor size and workot if incentives needs extra space etc
            var bff = 4020 + (1993 - windowwidth);

            // Move divs into position
            $('.culture').css('top', + - windowheight + 'px');
            $('.careerpath').css('top', + - windowheight + 'px');
            $('.training').css('top', + - windowheight + 'px');
            $('.apply').css('top' , + - windowheight + 'px');



            /* ========== DRAWING THE PATH AND INITIATING THE PLUGIN ============= */

            $.fn.scrollPath("getPath")
                // Move to 'start' element
                .moveTo(0, 0, {name: "div"})
                .lineTo(2400, 0, {name: "div1"})

                .lineTo((bff-550), 0, {name: "div2"})

                .lineTo(bff, 0, {name: "div3"})

                .lineTo(bff, -windowheight, {name: "div4"})

                .lineTo((bff + 1993), -windowheight, {name: "div5"})

                .lineTo((bff + 1993 + 1837), -windowheight, {name: "div6"})

                .lineTo((bff + ((1993 + 1837 + 1795) - 325)), -windowheight, {name: "div7"})

            // We're done with the path, let's initate the plugin on our wrapper element
            // Window resize function
            $(window).resize(function() {
                if(this.resizeTO) clearTimeout(this.resizeTO);
                this.resizeTO = setTimeout(function() {
                    $(this).trigger('resizeEnd');
                }, 500);
            });

            $(window).bind('resizeEnd', function() {
                $("#path").scrollPath({drawPath: true, wrapAround: false});
            });

            $("#path").scrollPath({drawPath: true, wrapAround: false});

        }

最佳答案

好的,现在我用谷歌搜索了您使用的插件,我知道发生了什么。

http://joelb.me/scrollpath/

实际上,“线”是一种形状,而scrollPath为此生成了一个不错的大画布。问题出在scrollPath内。它创建了太多的画布实例或泄漏了一些东西。

您应该更好地跟踪/记录该错误,并将其报告给作者。

由于我们知道您并不是指一条直线,因此从单个DOM元素创建路径的建议无效。我不知道您的trget到底是什么,但是您可以通过impress.js来实现

10-06 15:54