2012-07-02 4 views
0

Я написал сценарий, чтобы скрыть и показать загрузчик для моего веб-приложения asp.net. Скрипт отлично работает при размещении в строке. Я попытался извлечь скрипт во внешний файл и получил следующее сообщение об ошибке:Как использовать внешний файл javascript в asp.net

Ошибка: Значение свойства «Приостановка» является нулевым или не определено, а не объект 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 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); 
    } 
} 

Затем я получаю вышеупомянутую ошибку.

Любая помощь была бы принята с благодарностью!

+0

сделайте свой встроенный код таким же, как внешний файл, и посмотрите, не получите ли вы такую ​​же ошибку. Идите оттуда с вашей отладкой. –

ответ

4

Всегда используйте ResolveUrl называть файлы сценариев, как этот

Давайте предположим, что ваш скрипт находится в папке Сценариев корневой путь с именем файла в качестве MyScriptFile.js

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

EDIT: вы можете использовать ResolveUrl или ResolveClientUrl в зависимости от потребностей

ResolveUrl создает URL-адрес относительно корня, где ResolveClientUrl создает URL-адрес относительно текущей страницы.

+0

Я добавил это в свой скрипт src, и я все еще получаю ту же ошибку. Есть предположения? – jfielaidof

+0

Вы пробовали с ResolveClientUrl вместо ResolveUrl? –

+0

Просто проверено, почему вы используете initAll i.e .., функцию initAll()? вывести из нее функцию приостановки intiAll() –

0

Основываясь на ваш вопрос: Как использовать внешний файл Javascript в asp.net

<script type="text/javascript" src="http://www.xyz.com/test.js"></script> 
Смежные вопросы