2010-08-24 113 views
1

我正在使用asp.net和jquery网站,并且在运行时浏览网站时发生了java脚本错误。该GetMainFrameUrl未定义 的Visual Studio debuger引用:如何解决JavaScript错误:方法XX未定义?

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

是有帮助,请???

+3

so ...是否定义了GetMainFrameUrl?你没有发布任何代码.. – Fosco 2010-08-24 14:27:15

+0

@Fosco:或许他想知道如何发现? – Abel 2010-08-24 14:41:05

回答

1
+0

感谢您的重播,但我没有使用它。 – DEVMBM 2010-08-24 14:37:57

+0

然后你从哪里得到代码(我假设你没有写它,否则你会知道方法在哪里)? GetMainFrameUrl在哪里定义?你在引用那个文件吗? – Chuck 2010-08-24 14:46:20

+0

@DEVMBM:当然?有没有那么多人命名他们的方法['EBNavigateComplete'](http://www.conduit.com/Developers/HtmlAndGadget/Events/EBNavigateComplete.aspx)...是不是应该被称为回调时导航完成? – Abel 2010-08-24 14:46:46

0

Visual Studio调试器并不总是能够加载所有动态加载脚本(但通常它虽然)的。如果您在Firefox或Opera中运行它,是否会出现相同的错误?

该错误表示功能GetMainFrameUrl未定义。如果您拼错了现有函数的名称,或者该函数仅在链中稍后加载,则会发生这种情况。在后一种情况下,请更改<script>块的顺序,使其中第一个加载的块的顺序为GetMainFrameUrl

找出该函数是否可用的一种简单方法是在Visual Studio中打Ctrl-Shift-F,选择“整个解决方案”,并且没有任何文件过滤器并搜索缺失函数的名称。

+0

感谢重播我已经这样做了,无法找到前一个函数的参考,也无法确定它的名称 – DEVMBM 2010-08-24 14:43:19

+0

@DEVMBM:在这种情况下,请尝试将Conduit API作为您的第一个脚本之一。也许你使用的脚本是外部脚本,你不知道它是依赖于[Conduit](http://www.conduit.com/Developers/overview.aspx)?试试吧,你会对结果感到惊讶:) – Abel 2010-08-24 14:48:48

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; 
     } 
    } 
} 
相关问题