jQuery .trigger()无法在Internet Explorer上触发

时间:2018-08-27 07:33:30

标签: jquery triggers custom-events

执行功能时,我正在文档上触发事件。在Internet Explorer(版本11)以外的所有浏览器中,它都可以正常工作。这是我的代码

function getBgUrl(el) {
    if (typeof el !== "undefined" || el !== null) {
        var bg = "";
        if (el.currentStyle) { // IE
            bg = el.currentStyle.backgroundImage;
        } else if (document.defaultView && document.defaultView.getComputedStyle) { // Firefox
            bg = document.defaultView.getComputedStyle(el, "").backgroundImage;
        } else { // try and get inline style
            bg = el.style.backgroundImage;
        }
        return bg.replace(/url\(['"]?(.*?)['"]?\)/i, "$1");
    }
}

if ( jQuery('#wcp_body').length ) {
    var image = document.createElement('img');
    image.src = getBgUrl(document.getElementById('wcp_body'));
    image.onload = function (event) {
        //jQuery(document).trigger('bgimageloaded');
        jQuery.event.trigger({type: "bgimageloaded" });
    };
}  

然后,准备好文档。

jQuery( document ).ready(function($) {

    $(document).on('bgimageloaded', function() {
        console.log( 'BG Image Loaded' );
    });

});  

上面的代码实际上获取与元素关联的背景图像,并在加载图像时触发自定义事件。我不明白为什么这仅在IE11中不起作用。

任何帮助将不胜感激。
谢谢

1 个答案:

答案 0 :(得分:0)

我认为您将为触发器设置超时。

setTimeout(function(){

// jQuery(document).trigger('bgimageloaded');

jQuery.event.trigger({type: "bgimageloaded" });

},第10段);