0
Я надеюсь, что кто-то может мне помочь, потому что я не могу найти рабочее решение для своей проблемы.
Я кодирую в ASP.NET WebForms с C#. Я использую MasterPage. В этом MasterPage я определяю свои скрипты в ScriptManager.
<asp:ScriptManager ID="smScripts" runat="server">
<Scripts>
<asp:ScriptReference Path="~/Scripts/jquery-2.1.1.min.js" />
<asp:ScriptReference Path="~/Scripts/bootstrap.min.js" />
<asp:ScriptReference Path="~/Scripts/printArea.js" />
<asp:ScriptReference Path="~/Scripts/globalFunctions.js" />
<asp:ScriptReference Path="~/Scripts/jquery.browser.min.js" />
<asp:ScriptReference Path="~/Scripts/jquery.reject.js" />
</Scripts>
</asp:ScriptManager>
Теперь, если я использую jQuery на любой странице e. г. Default.aspx внутри функции она отлично работает:
<script type="text/javascript">
function Print(options) {
$("div.PrintArea").printArea(options);
}
</script>
Но если я пытаюсь использовать его непосредственно в блоке сценария - например, подождать, пока документ не будет готов - это не работает:
<script type="text/javascript">
$(document).ready(function() {
// some code
});
</script>
Я получаю сообщение об ошибке «Ошибка выполнения JavaScript:« $ undefined ». Я не знаю, как я могу исправить эту проблему.
Может быть, кто-то может мне помочь? Заранее спасибо.
Возможно, что ваши '
Скажем, мы хотим добавить jquery на каждую страницу, поэтому вам нужно включить ссылку на свой скрипт на своей главной странице.
В соответствии с рекомендациями, вы должны поместить все ссылки и скрипты javascript в конец тега html
<body>
: перед тегом</body>
.Так что в вашем случае, вы должны ссылаться на весь ваш общую JS файла в конце
<body>
тега, а затем установить раздел так:Так на страницах, которые наследуют от главной страницы вы определили все ваши JS в этом разделе, и вы гарантируете, что загрузка jquery будет первой.
Если вы не хотите менять все свои вещи, просто добавьте ссылку jquery в раздел
head
вашей html-страницы.источник
2015-12-11 08:51:29 Thomas
Проблема заключается в том, что ScriptManager находится в разделе тела главной страницы. ContentPalceHolder для моей головы находится в главном разделе. Поэтому я думаю, что на странице содержимого голова загружается до того, как загрузится ScriptManager в основной части главной страницы. – CSharper
@CSharper, вам нужно добавить прямую ссылку на js, такую как '' не использовать ScriptManager для такого рода ссылок – Thomas
Теперь я делаю так. И это работает. Но с «~/Scripts/...» страницы содержимого не могут загрузить сценарий. Поэтому я загружаю скрипт непосредственно с моего сервера следующим образом: src = "https: // ...". Может быть, есть лучший способ? Посмотрите также на мой ответ. – CSharper
Если я использовать простые теги сценария перед тем ContentPlaceHolder вместо ScriptManager это работает:
Чтобы обеспечить правильный путь на каждой странице контента я загрузить его прямо с моего сервера вместо использования путь как "~/scripts/...". Может быть, есть лучший способ?
источник
2015-12-11 09:01:47 CSharper
Добавьте скрипт следующим образом: ' ' – Thomas
Если я использую тег скрипта с свойством runat, он не компилируется. Если я использую его без свойства runat, он соответствует, но я получаю следующую ошибку: немецкий оригинал: Die Steuerelementeauflistung kann nicht geändert werden, da das Steuerelement Codeblöcke enthält (z.B. <% ... %>). Английский от Google: список элементов управления не может быть изменен, поскольку элемент управления содержит блоки кода (то есть <% ...%>). – CSharper
@ Томас, может быть, ты поможешь мне еще раз? – CSharper