SetTimeout的替代方案

时间:2015-06-08 23:24:02

标签: javascript jquery

您好我已经编写了一些javascript代码来生成iFrame并在其中插入内容。但我不想使用setTimeout,我想重构代码。我试图使用document.ready()和window.onLoad(),但它们不起作用。

这是我的代码:

    onShow: function() {
        //TODO: why 200 ms wait? why not wait for specific event
        setTimeout(this.injectHtml.bind(this), 200);
    },

    injectHtml: function() {
        var iframe = this.el;
        if (iframe.contentWindow === null) { //Check for contentWindow for null.
            $(iframe).html(this.params.html);
        } else { //If contentWindow is present then open the document for writing.
            iframe = iframe.contentWindow;
            iframe.document.open('text/html');
            iframe.document.write(this.params.html);
            iframe.document.close();
            $(this.el).on('load', function() {
                var iframe = $(this).contents();
                iframe.find("#langSelect").off("change");
                iframe.find("#langSelect").on("change", function() { //If another language is selected from Dropdown.
                    abc.languages.setSelected($(this).val());
                    abc.elements.setLanguage();
                    Vent.trigger(Vent.Event.LANGUAGE_SELECTED, $(this).val());
                });
            });
        }
    }

我真的很困惑。谁能摆脱光明?

我也试过这个:

情况#1:

var _this=this;
$(document).ready(function(){
_this.injectHtml.bind(_this);  //Does not work. Everything loads, I get empty page
});

案例#2:

window.onLoad = function(){
this.injectHtml.bind(this);
};

任何人都可以帮忙吗?

0 个答案:

没有答案