jQuery函数有时不运行

时间:2011-04-27 16:10:48

标签: jquery

我有以下功能,主要用于将iframe高度设置为其内容的高度:

$("#MSOPageViewerWebPart_WebPartWPQ1").load(function()
        {
            var Height = document.getElementById('MSOPageViewerWebPart_WebPartWPQ1').contentWindow.document.body.scrollHeight;

            document.getElementById('MSOPageViewerWebPart_WebPartWPQ1').height = Height;
        });

绝大部分时间这将按预期运行,但在奇怪的情况下,它将需要在页面工作之前进行大量重新加载。当然,尝试调试它是徒劳的,因为它似乎总是能够实现功能和工作。

任何人都知道为什么每次都行不通?

3 个答案:

答案 0 :(得分:0)

试试这个:

$(function(){
$("#MSOPageViewerWebPart_WebPartWPQ1").load(function()
        {
setTimeout(function(){
            var Height = document.getElementById('MSOPageViewerWebPart_WebPartWPQ1').contentWindow.document.body.scrollHeight;

            document.getElementById('MSOPageViewerWebPart_WebPartWPQ1').height = Height;
        });
},100);
});

答案 1 :(得分:0)

为什么要使用'getElementById'。尝试使用jQuery内置选择器机制:

jQuery("#MSOPageViewerWebPart_WebPartWPQ1").load(function() {
    // not sure, if this row work's fine in every context, try: http://stackoverflow.com/questions/926916/how-to-get-the-bodys-content-of-an-iframe-in-javascript/11107977#11107977
    var scrollHeight = jQuery(this).contentWindow.document.body.scrollHeight;

    jQuery(this).height = scrollHeight;
});

答案 2 :(得分:0)

我遇到了同样的问题。有时没有运行脚本。但是,我认为这是一个连接问题。当我没有连接到互联网并只查看我的网站(使用浏览器使用其文件路径,例如file:/// C:/Users/Alejandro/Dropbox/Prices/index.html)时,该页面需要相当多的时间加载时间(这很奇怪,因为它是轻量级的),之后显示内容但没有运行任何脚本。

我认为加载页面时会因为浏览器试图下载jQuery源而延迟。

所以,我要做的是包含一个Jquery后备。的 More info in xandercoded's answer

如果您将网站设置为在线,那将是愚蠢的,因为用户已经需要Internet连接来下载您的网站(因此将下载jQuery)。