2013-07-29 4 views
0

У меня есть сайт ASP.Net с некоторыми ссылками на файлы JS. В моем заголовке мастер-страницы У меня есть 3 файлов, которые всегда ссылаются и одну функциюФайлы JS, ссылающиеся на непонятное поведение

<script src="/EPS/Scripts/jquery-1.10.0.min.js" type="text/javascript"></script> 
    <script src="/EPS/Scripts/jquery-ui.min.js" type="text/javascript"></script> 
    <script src="/EPS/Scripts/menu.js" type="text/javascript"></script>  

    <script language="javascript" type="text/javascript"> 

     function checkJavaScriptValidity() { 
      document.getElementById("jsDisabled").style.visibility = 'hidden'; 
      document.getElementById("jsEnabled").style.visibility = 'visible';    
     } 

    </script> 

Тогда в одном из моих ASPX страниц я еще несколько ссылок (также добавлены в заголовок страницы, используя ContentPlaceHolders)

*JS1*<script type="text/javascript" language="javascript" src="https://serverapi.arcgisonline.com/jsapi/arcgis/3.5"></script>  
    <script src="/EPS/Scripts/savestate.js" type="text/javascript" > </script> 
    *JS2*<script src="/EPS/EPS_Controls/wcMapControl.js" type="text/javascript" > </script> 

ПРОБЛЕМА: у меня есть пользовательский элемент управления, который использует файлы, которые я помеченные СП1 и СП2 (эти теги не в исходном коде). Когда элемент управления загружен/используется, я получаю сообщение об ошибке в JS или он не запускается. В последние пару часов я попробовал пару вещей (заказ и место), и это не изменило ситуацию.

Браузеры

IE8: В текущем порядке я получаю сообщение об ошибке: "Microsoft JScript ошибка времени выполнения: 'не определено' является недействительным или не является объектом" в СП1

FF v22 .0 Я не получаю сообщение об ошибке (или, по крайней мере, я не смог найти их), но я знаю, что мой JS не работал

Теперь вот мой дилемма, я использовал это SAME управление и те SAME JS файлы в другом тестовом проекте, и он отлично работает с любыми проблемами там!

Вопрос Любые подсказки о том, почему это произошло? Какие конфигурации в моем проекте повлияли бы на это?

ответ

1

Помните, что, когда дело доходит до javascript, все зависит от того, что видит браузер - в коде сервера нет ничего, вашей конфигурации проекта или что-либо еще в вашем приложении, что может вызвать проблему с javascript.

Имея это в виду, просто запустите View Source на своей странице. Я предполагаю, что ваши теги скриптов попадают после элемента управления, поэтому элемент управления пытается сделать то, что еще не определено. Как только вы подтвердите это, выясните, где хранитель содержимого со скриптами, и переместите его соответственно - он, вероятно, сейчас находится в теле, и ему просто нужно идти в голову или, по крайней мере, выше в теле.

+0

Мои JS файлы в заголовке, а элемент управления находится в корпусе –

+0

Подтвердив расположение моих файлов JS, я заметил ошибка в моих контрольных внутренних вызовах JS, которые вызовут неопределенный, принятый как ответ coz u указал мне в этом направлении –

+0

Прохладный, рад, что вы его работали. –

1

Для правильной загрузки внешних скриптов используйте ScriptManager на главной странице и ScriptManagerProxy на страницах контента и пользовательских элементах управления. Например, в главной странице:

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
<Scripts> 
    <asp:ScriptReference Path="/EPS/Scripts/jquery-1.10.0.min.js" /> 
    <asp:ScriptReference Path="/EPS/Scripts/jquery-ui.min.js" /> 
    <asp:ScriptReference Path="/EPS/Scripts/menu.js" /> 
</Scripts> 
</asp:ScriptManager> 

В странице содержимого

<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server"> 
<Scripts> 
    <asp:ScriptReference Path="https://serverapi.arcgisonline.com/jsapi/arcgis/3.5" /> 
    <asp:ScriptReference Path="/EPS/Scripts/savestate.js" /> 
</Scripts> 
</asp:ScriptManagerProxy> 
+0

Вы предлагаете использовать SM для регистрации файлов JS вместо их в моем HTML? –

+0

@JafarKofahi По-прежнему используйте HTML (разметка ASPX скорее), но вместо ссылки на '