在页面开始渲染之前注入JQuery的任何灵巧而聪明的方法?

时间:2009-03-20 01:17:02

标签: asp.net-mvc webforms web-config

我希望以某种方式将jQuery插入每个页面,并使用 MINIMUM 代码编写... 换句话说,我不想在每个aspx页面上写<script language="javascript" src="PATH TO JQUERY"></script>

到目前为止,我已经考虑过使用Base类并在“page load”事件中插入“Response.Write”。 除此之外,我的其他选择是什么...... web.config?别的什么?

Webforms / MVC解决方案的奖励积分。感谢您的任何建议。

编辑: 在http://www.codeproject.com/KB/aspnet/scriptregister.aspx找到了我喜欢的答案 作者和我一样,不喜欢ClientScript.RegisterClientScriptBlock的标准实现,因为各种原因(比如MSFT坚持使用FORM runat = server标签)并构建了一个更好的捕鼠器。

5 个答案:

答案 0 :(得分:2)

使用MasterPages并将置于顶部。有些人说把它放在底部,但在第一次加载之后它仍然被缓存,如果你要操作DOM,我个人宁愿在我的用户真正开始看到正在呈现的页面之前做它。将它放在底部肯定会导致这种情况发生,并且可能使用户感到困惑并导致糟糕的用户体验。

答案 1 :(得分:1)

您可以在全局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);
}

聚苯乙烯。我想你也可以用http模块做到这一点。

答案 2 :(得分:0)

如果你已经包括

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

在每一页中,我相信你可以挤进一个

<script ...></script>

但我仍然同意肯:看看母版页。

答案 3 :(得分:0)

不知道你是建筑,这可能很难回答。

但是,我可以建议,如果您最终必须修改所有页面,请将它们设置为使用include,如果您必须更新您的jquery版本或添加$(document).ready()函数或添加任何jquery插件,你可以修改include而不必重新修改所有页面。

答案 4 :(得分:0)

best practice是在您网页的底部加载javascript,以防止您的脚本减慢初始页面加载速度。

由于您还特别提到了jquery,我建议您在主页末尾使用此代码:

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

这样做的好处是您的用户可能已经在浏览器中缓存了此jquery副本,并且您将始终使用最新版本来启动:)

如果您使用的是母版页,则无需将脚本“插入每个页面”。