我正在使用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;
}
}
}
请帮助吗???
答案 0 :(得分:1)
您使用的是Conduit API吗?如果是这样,您是否引用了该脚本库? http://www.conduit.com/Developers/HtmlAndGadget/Methods/GetMainFrameUrl.aspx http://www.conduit.com/Developers/HtmlAndGadget/Events/EBNavigateComplete.aspx
答案 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;
}
}
}