页面抛出JavaScript运行时错误:“函数名称”未定义。仅适用于IE10。

3

在处理IE10时,我发现从后台注册或调用的JavaScript函数会抛出异常:

"JavaScript运行时错误:'函数名称'未定义"。

例如: 在(!IsPostBack)块中的后台代码:

Page.RegisterStartupScript("showGCAlert", "<script language=\"javascript\">ShowGCAlert();</script>");

页面视图:

function ShowGCAlert()
    {

        alert('GCAlert');
        if(document.getElementById('hdnGCAlert').value != "1")
        {
            document.getElementById('divGCAlert').style.display = "Block";
            document.getElementById('chkReminder').focus();
            document.getElementById('btnLogin').disabled = true;
            document.getElementById('Button2').disabled = true;             

        }
        else
        {
            document.getElementById('divGCAlert').style.display = "none";
            document.getElementById('btnLogin').disabled = false;
            document.getElementById('Button2').disabled = false;                
            if (document.getElementById("txtUsername").value != "")
                document.getElementById("txtPassword").focus();
            else
                document.getElementById("txtUsername").focus();
        }

    }

当页面加载时,即使动态页面存在 ShowGCAlert() 方法,也会抛出异常。
继续浏览异常设计页面后显示:
<script language="javascript" src="/ABC/DEF/Scripts/Common.js"></script>
<script language="javascript">
    document.body.style.overflowY="hidden";
    document.body.style.overflowX="hidden";
    var jsAppName ='ABC';
</script>
<script language="javascript">
    function window.onresize() 
    { 
        document.cookie = "resX=" 
                        + document.body.clientWidth 
                        + ";resY=" 
                        + document.body.clientHeight 
                        + ";path=/"; 
    } 
    window.onresize();
</script>
<script type="javascript">
      ShowGCAlert();
</script>
<script language="javascript">
    document.getElementById('txtPassword').focus();
</script>

在ie9或IE10兼容性视图下,它能正常工作。请告诉我哪里出了问题。

你尝试过在ClientScriptManager中使用非废弃版本吗?http://msdn.microsoft.com/en-us/library/asz8zsxy%28v=vs.110%29.aspx - Louis Ricci
@LastCoder 是的,刚才我使用了这个..但仍然显示异常。 - Maybe2013
从末尾数第六行开始:<script type=text/javascript> 这个错别字只在你的问题中吗?应该是 <script type="text/javascript"> - Anto Jurković
1个回答

1
尝试使用RegisterClientScriptBlock将脚本放置在页面的末尾,并调用它。
   Page.ClientScript.RegisterClientScriptBlock("showGCAlert", 
     "<script type=\"text/javascript\">ShowGCAlert();</script>");

仍然抛出异常。 - Maybe2013
更新了问题,请看看这是否是您想要的? - Maybe2013
如果从RegisterStartupScript中调用alert('hi'),那么它不会引发异常。 - Maybe2013
@Maybe2013,我在我的回答中将语言更改为 type=text/javascript。试试看吧。 - Murali Murugesan
@Maybe2013,请确保你在调用函数ShowGCAlert();时加上了;,同时也向我们展示一下ShowGCAlert函数内部的代码。 - Murali Murugesan
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接