未捕获的类型错误:topFrame.window.changeSelectedBarStyle不是函数,原因是什么

Uncaught TypeError: topFrame.window.changeSelectedBarStyle is not a function,why?

本文关键字:函数 是什么 changeSelectedBarStyle window 类型 错误 topFrame      更新时间:2023-09-26

这是我的函数更改SelectedBarStyle:

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");
        }
    });
}

这是我从控制台得到的:未捕获类型错误: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");    

}

问题在于:$(document).ready(function)

因为在此之前,它使用的是:

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

topFrame.window.changeSelectedBarStyle很可能是未定义的。console.log(...)进行验证。

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

请注意,jQuery的ready事件是在只加载DOM之后激发的,因此此时不会加载帧内容。

如果您试图访问iframewindow对象,您可能正在查找contentWindow属性。