jquery - 如何延迟mozilla浏览器的功能

标签 jquery html css imageflow

我的 ImageSlider 代码在 Chrome 中完美运行,但在 Mozilla 中它不起作用,如果我发出一些警报然后它起作用可能是因为有了警报它有时间从背景中的 xml 加载值,如何延迟 init init ()功能。

HTML 代码::

$(document).ready(function () {
                getData();
                //alert('START');

            1});

JS 代码::

  * DOMContentLoaded event handler -*/
var domReadyEvent =

{

    name: "domReadyEvent",

    /* Array of DOMContentLoaded event handlers.*/

    events: {},

    domReadyID: 1,

    bDone: false,

    DOMContentLoadedCustom: null,



    /* Function that adds DOMContentLoaded listeners to the array.*/

    add: function(handler)

    {

        /* Assign each event handler a unique ID. If the handler has an ID, it has already been added to the events object or been run.*/

        if (!handler.$$domReadyID)

        {

            handler.$$domReadyID = this.domReadyID++;



            /* If the DOMContentLoaded event has happened, run the function. */

            if(this.bDone)

            {

                handler();

            }



            /* store the event handler in the hash table */

            this.events[handler.$$domReadyID] = handler;

        }

    },



    remove: function(handler)

    {

        /* Delete the event handler from the hash table */

        if (handler.$$domReadyID)

        {

            delete this.events[handler.$$domReadyID];

        }

    },



    /* Function to process the DOMContentLoaded events array. */

    run: function()

    {

        /* quit if this function has already been called */

        if (this.bDone)

        {

            return;

        }



        /* Flag this function so we don't do the same thing twice */

        this.bDone = true;



        /* iterates through array of registered functions */

        for (var i in this.events)

        {

            this.events[i]();

        }

    },



    schedule: function()

    {

        /* Quit if the init function has already been called*/

        if (this.bDone)

        {

            return;

        }



        /* First, check for Safari or KHTML.*/

        if(/KHTML|WebKit/i.test(navigator.userAgent))

        {

            if(/loaded|complete/.test(document.readyState))

            {

                this.run();

            }

            else

            {

                /* Not ready yet, wait a little more.*/

                setTimeout(this.name + ".schedule()", 100);

            }

        }

        else if(document.getElementById("__ie_onload"))

        {

            /* Second, check for IE.*/

            return true;

        }



        /* Check for custom developer provided function.*/

        if(typeof this.DOMContentLoadedCustom === "function")

        {

            /* if DOM methods are supported, and the body element exists (using a double-check

            including document.body, for the benefit of older moz builds [eg ns7.1] in which

            getElementsByTagName('body')[0] is undefined, unless this script is in the body section) */

            if(typeof document.getElementsByTagName !== 'undefined' && (document.getElementsByTagName('body')[0] !== null || document.body !== null))

            {

                /* Call custom function. */

                if(this.DOMContentLoadedCustom())

                {

                    this.run();

                }

                else

                {

                    /* Not ready yet, wait a little more. */

                    setTimeout(this.name + ".schedule()", 250);

                }

            }

        }

        return true;

    },



    init: function()

    {

        /* If addEventListener supports the DOMContentLoaded event.*/

        if(document.addEventListener)

        {

            document.addEventListener("DOMContentLoaded", function() { domReadyEvent.run(); }, false);

        }



        /* Schedule to run the init function.*/

        setTimeout("domReadyEvent.schedule()", 100);



        function run()

        {

            domReadyEvent.run();

        }



        /* Just in case window.onload happens first, add it to onload using an available method.*/

        if(typeof addEvent !== "undefined")

        {

            addEvent(window, "load", run);

        }

        else if(document.addEventListener)

        {

            document.addEventListener("load", run, false);

        }

        else if(typeof window.onload === "function")

        {

            var oldonload = window.onload;

            window.onload = function()

            {

                domReadyEvent.run();

                oldonload();

            };

        }

        else

        {

            window.onload = run;

        }



        /* for Internet Explorer */

        /*@cc_on

            @if (@_win32 || @_win64)

            document.write("<script id=__ie_onload defer src=\"//:\"><\/script>");

            var script = document.getElementById("__ie_onload");

            script.onreadystatechange = function()

            {

                if (this.readyState == "complete")

                {

                    domReadyEvent.run(); // call the onload handler

                }

            };

            @end

        @*/

    }

};



var domReady = function(handler) { domReadyEvent.add(handler); };

domReadyEvent.init();





/* Create ImageFlow instances when the DOM structure has been loaded */

domReady(function()

{

    var instanceOne = new ImageFlow();

    instanceOne.init({ ImageFlowID:'myImageFlow' });

});

最佳答案

我不理解你的代码,但可以告诉你,添加延迟来解决这样的问题是糟糕的编程习惯。

而是找出导致该行为的原因并尝试修复它。

您可以改用回调吗?

关于jquery - 如何延迟mozilla浏览器的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17443169/

相关文章:

javascript - 用 500 行填充表格需要很长时间 - jQuery 和 Bootstrap CSS

html - 多个页面上的 Jekyll 分页

javascript - 最大高度不起作用

jquery - 在 jQuery 中,如何在固定高度的父级中制作幻灯片动画?

javascript - TreeTable 中可调整大小的列?

javascript - 将 id 传递给 Bootstrap 模式内的 link_to_route

javascript - 每个循环内表单上的 Rails Ajax 具有嵌套资源和 html 类

css - 什么是 HTML 中心标签的 DIV 样式?

jquery - 需要拖放div

javascript - Internet Explorer 11 中的 Jquery 对话框问题