未捕获的TypeError:topFrame.window.changeSelectedBarStyle不是函数,为什么?

时间:2016-05-16 03:07:22

标签: javascript jquery

这是我的函数changeSelectedBarStyle:

function changeSelectedBarStyle(tdId){
    $("#menuTable td").each(function(index){
        if(this.id == tdId){
            $(this).removeClass("menuPanel");
            $(this).addClass("menuPanelSelected");
        }else{
            $(this).removeClass("menuPanelSelected");
            $(this).addClass("menuPanel");
        }
    });
}

这是我从控制台获得的:未捕获的TypeError:topFrame.window.changeSelectedBarStyle不是函数

它变成了一个空白页面。 但是,此错误仅在第一次显示。如果刷新页面,一切都很好。

----------------编辑更多信息---------------------

这是调用它的函数,我添加了一些日志(这次显示页面加载正确时不是空白页面):

    function changeTopFrameBarStyle(pageType){
        topFrame.window.changeSelectedBarStyle(pageType);
        console.log(pageType);//job(it is correct)
        console.log(topFrame.window.changeSelectedBarStyle);//changeSelectedBarStyle(tdId)
        console.log(topFrame.window.changeSelectedBarStyle(pageType));//undefined
        console.log(topFrame.window);//Window webSiteTopMenu.jsp(this page is the function changeSelectedBarStyle exists)
    }

这是调用以下内容的页面:

$(document).ready(function() {  
    window.parent.changeTopFrameBarStyle("job");    

}

这是事情: $(文件)。就绪(函数()

因为在此之前,它正在使用:

window.onload= function(){
    window.parent.changeTopFrameBarStyle("people");
};

1 个答案:

答案 0 :(得分:2)

topFrame.window.changeSelectedBarStyle可能未定义console.log(...)要验证。

可能是框架的内容尚未加载。访问topFrame事件window.onload,确保加载DOM,所有图像,脚本和框架。

请注意,jQuery的ready事件仅在加载DOM后触发,因此当时不会加载帧内容。

如果您尝试访问window iframe对象,则可能正在寻找contentWindow媒体资源。