Любые хитрые и умные способы внедрить JQuery до того, как страница начнет рендериться? - PullRequest
0 голосов
/ 20 марта 2009

Я пытаюсь как-то вставить jQuery в каждую страницу с написанным кодом MINIMUM ... другими словами, я не хочу писать <script language="javascript" src="PATH TO JQUERY"></script> на каждой странице aspx.

До сих пор я думал об использовании базового класса и вставке «Response.Write» в событие «загрузка страницы». Кроме того, каковы мои другие варианты ... web.config? что-то еще?

Бонусные баллы за решение Webforms / MVC. Спасибо за любые предложения.

EDIT: Нашел ответ, который мне нравится на http://www.codeproject.com/KB/aspnet/scriptregister.aspx Автору, как и мне, не понравилась стандартная реализация ClientScript.RegisterClientScriptBlock по разным причинам (например, из-за того, что MSFT требует наличия тега runm = server FORM), и он создал лучшую мышеловку.

Ответы [ 5 ]

2 голосов
/ 20 марта 2009

Используйте MasterPages и поместите его вверху . Некоторые люди говорят, что поместите его внизу, но после первой загрузки он все равно будет кэширован, и если вы собираетесь манипулировать DOM, лично я бы предпочел сделать это до того, как мой пользователь действительно увидит, что страница отображается. Наличие этого в нижней части может определенно привести к тому, что это произойдет, и может ввести пользователя в заблуждение и привести к плохому взаимодействию с пользователем.

1 голос
/ 20 марта 2009

Вы можете подключиться к любому событию жизненного цикла страницы в глобальном asax:

void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
    Page page = this.Context.CurrentHandler as Page;
    if( page != null )
        page.Load += new EventHandler(page_Load);
}

void page_Load(object sender, EventArgs e)
{
    Page page = (Page)this.Context.CurrentHandler;
    page.ClientScript.RegisterClientScriptInclude("jquery", jqueryurl);
}

Ps. Я думаю, что вы можете сделать это и с модулем http.

0 голосов
/ 20 марта 2009

не зная, что вы архитектура, на этот вопрос трудно ответить в общем.

Тем не менее, могу ли я предложить, что если вам в конечном итоге придется изменить все свои страницы, настройте их для использования включения, если вам придется обновить версию jquery или добавить функцию $ (document) .ready () или добавив любой плагин jquery, вы можете изменить include и не нужно повторно изменять все страницы.

0 голосов
/ 20 марта 2009

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

Поскольку вы также специально упомянули jquery, я бы рекомендовал использовать этот код в конце вашей главной страницы:

<script src="http://www.google.com/jsapi"></script>
<script>
  // Load jQuery
    google.load("jquery", "1");
</script>

Преимущество этого состоит в том, что ваши пользователи, вероятно, уже будут иметь эту копию jquery, кэшированную в их браузере, и вы всегда будете использовать последнюю версию для загрузки:)

Если вы используете мастер-страницу, вам не нужно будет вставлять скрипт «на каждую страницу».

0 голосов
/ 20 марта 2009

Если вы уже включаете

<html><head><title>Title</title></head><body>...</body></html>

на каждой странице, я уверен, что вы можете втиснуть в

<script ...></script>

Но я все равно согласен с Кеном: взгляните на главные страницы.

...