如何解决JavaScript错误:方法XX未定义?

时间:2010-08-24 14:24:39

标签: javascript asp.net jquery

我正在使用asp.net和jquery网站,当运行浏览网站时,发生了一个java脚本错误。 Visual Studio debuger引用了GetMainFrameUrl未定义:

function EBNavigateComplete() 
{
    if (!GetMainFrameUrl())
    {
        navCounter++;
        if (navCounter%100==0)
        {
            o.loadEmptyTerm();
            counter = 0;
        }
    }
    else
    {
        if (o.pbNavigateComplete(GetMainFrameUrl()))
        {
            counter = 0;
        }
    }
}

请帮助吗???

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

Visual Studio调试器并不总是能够加载所有动态加载的脚本(但通常它会加载)。如果你在Firefox或Opera中运行它会发生同样的错误吗?

错误表示未定义函数GetMainFrameUrl。如果拼写错误的现有函数的名称,或者仅在链的后期加载函数,则会发生这种情况。在后一种情况下,更改<script>块的顺序,使其中GetMainFrameUrl的块首先加载。

找出该函数是否在某处可用的一种简单方法是在Visual Studio中点击Ctrl-Shift-F,选择“整个解决方案”,不对文件过滤器进行任何操作,并搜索缺失函数的名称。

答案 2 :(得分:0)

如果您想检查GetMainFrameUrl函数是否存在,则无法使用“if(!GetMainFrameUrl())”。在这种情况下,javascript执行该函数并比较返回值。 您可以使用“if(!GetMainFrameUrl)”,但这只会检查是否存在具有此名称的任何函数,对象或变量。 你应该使用“typeof”。见例子:

function EBNavigateComplete() 
{
    if ( typeof GetMainFrameUrl !== 'function' )
    {
        navCounter++;
        if (navCounter%100==0)
        {
            o.loadEmptyTerm();
            counter = 0;
        }
    }
    else
    {
        if (o.pbNavigateComplete(GetMainFrameUrl()))
        {
            counter = 0;
        }
    }
}