繁体   English   中英

ASP.net:ClientScript.RegisterClientScriptBlock在加载jQuery之前触发

[英]ASP.net: ClientScript.RegisterClientScriptBlock fires before jQuery is loaded

这里有趣的问题来自我最近看过的一些继承的代码。 我正在尝试将压缩模块添加到项目中。 它正在加载所有JS和CSS文件,将它们组合在一起,缩小它们并压缩它们。 我尝试了很多解决方案,但所有这些解决方案都有一个致命的问题。

我有一些javascript正在通过MasterPage的PreRender中的Page.ClientScript.RegisterClientScriptBlock加载。 压缩模块在MasterPage中作为脚本标记链接加载,但是当我运行页面时...来自PreRender的代码被顶上并且给我一个'$ is undefined'错误,告诉我jQuery不是装了。

此外,当谈到内容页面上的内联javascript时,我似乎无法解决同样的问题。

关于是什么导致这个的任何想法? 启发我,因为我不知道。

如果之前使用RegisterStartupScript (而不是RegisterClientScriptBlock )完成了这项操作,并从WITHIN那个脚本调用$(document).ready(function()

我知道这个答案迟到了,但是尝试在OnPreRenderComplete (而不是OnPreRender )处理程序中调用ClientScript.RegisterClientScriptBlock 这将在页面呈现过程中稍后插入代码。

如果最终扩展到jquery的脚本标记链接不在头部,而是在页面正文中,则在脚本块执行时将取消定义$ ,除非它在开始<form />之前包含在html中在渲染的html中标记,我理解的是RegisterClientScriptBlock吐出其脚本(就在那个开始标记之后)。

如果不是这种情况,并且加入/缩小的脚本在头部,那么我将使用浏览器调试器(如Firebug或IE Dev Tools)来验证jquery脚本是否正确地包含在组合脚本中。

所有的jQuery代码都应该写在DOM-ready函数中:

$(function() {
    // your code here
});

独立于你将它放在页面中的位置,因为之前jQuery()函数是不可用的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM