1

我编写了一个脚本来隐藏和显示我的 asp.net Web 应用程序的加载程序。该脚本在内联放置时效果很好。我试图将脚本提取到外部文件并收到以下错误:

错误:属性“Pausing”的值为 null 或未定义,而不是 Function 对象

我试图查找错误,但我无法找到问题的解决方案。我是 asp.net 的新手,所以我可能不确定如何搜索正确的问题。

我的有效内联代码是:

<script type="text/javascript">

    function Pausing() {
        window.setTimeout(ShowLoader, 1);
    }

    function ShowLoader() {
        if ((typeof Page_IsValid === 'undefined') || 
            (Page_IsValid != null && Page_IsValid)) {
            var i = document.getElementById("loader");
            var img = document.getElementById("img");
            i.style.display = "block";
            setTimeout("document.images['img'].src=document.images['img'].src", 10);
            Endpausing();
        }
    }

    function HideLoader() {
        var i = document.getElementById("loader");
        i.style.display = "none";
    }

    function Endpausing() {
        window.setTimeout(HideLoader, 4000);
    }
</script>

事件调用附加到下面的 asp:button 控件:

<asp:Button ID="btnGetReport" runat="server" OnClick="btnGetReport_Click" OnClientClick="Pausing();" />

我删除了内联脚本并替换为...

<script type="text/javascript" src="../../Scripts/Loader.js"></script>

将脚本添加到外部文件:

window.onload = initAll;

function initAll() {

    function Pausing() {
        window.setTimeout(ShowLoader, 1);
    }

    function ShowLoader() {
        if ((typeof Page_IsValid === 'undefined') ||      // asp page has no validator
                (Page_IsValid != null && Page_IsValid)) {
            var i = document.getElementById("loader");
            var img = document.getElementById("img");
            i.style.display = "block";
            setTimeout("document.images['img'].src=document.images['img'].src", 10);
            Endpausing();
        }
    }

    function HideLoader() {
        var i = document.getElementById("loader");
        i.style.display = "none";
    }

    function Endpausing() {
        window.setTimeout(HideLoader, 4000);
    }
}

然后我收到前面提到的错误。

任何帮助将不胜感激!

4

2 回答 2

5

始终使用 ResolveUrl 像这样调用您的脚本文件

假设您的脚本位于根路径的 Script 文件夹中,文件名为 MyScriptFile.js

 <script type="text/javascript" src="<%= ResolveUrl ("~/Scripts/MyScriptFile.js") %>"></script>  

编辑:您可以根据需要使用 ResolveUrl 或 ResolveClientUrl

ResolveUrl 创建相对于根的 URL,而 ResolveClientUrl 创建相对于当前页面的 URL。

于 2012-07-02T16:14:03.153 回答
0

根据您的问题:如何在 asp.net 中使用外部 javascript 文件

<script type="text/javascript" src="http://www.xyz.com/test.js"></script>
于 2012-07-02T16:07:24.253 回答