被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用_javascript技巧

其所用项目由Asp.Net技术开发,仍然使用的Webform作为前端处理,但某些功能包含了jQuery的功能,他遇到的问题就是无论用IE还是Firefox,包含jQuery的那部分页面功能都无法正常使用。

搜索Google后,结果可以归纳为3种:

没有启用FSO功能
IE安全设置级别过高
没有安装MSXML
但针对现在项目检查后,以上均不是问题所在,在项目中带有个测试页面,可以检查服务器端是否能正常运行jQuery,内容和jQuery官方网站的内容一样:

代码

复制代码 代码如下:

<html>
<head>
<script type="text/javascript" src="js/jquery.js" />
<script type="text/javascript">
$(document).ready(function() {
$("a").click(function() {
alert("Hello world!");
});
});
</script>
</head>
<body>
<a href="#">Link</a>
</body>
</html>

可无论如何就是不能在IE或火狐中看到jQuery弹出的"OK"提示,我就囧了……于是我执行以下步骤:

下载最新的jQuery脚本替换掉项目中带有的版本
检查每行javascript代码
检查 IE安全设置,设置为最低
…………
均没有见到效果,直到今天突然才发现,该页面调用jQuery 的引用行是这样书写的

<script type="text/javascript" src="js/jquery.js" />

我改成

<script type="text/javascript" src="js/jquery.js" ></script>

“OK”终于弹出来了……

但问题还没有结束,项目开发者是在母版页中包含了jQuery, 源码如下

代码

复制代码 代码如下:

<asp:ScriptManager ID="ScriptManager1" runat="server" >
<Scripts>
<asp:ScriptReference Path="~/js/jquery.js" />
</Scripts>
</asp:ScriptManager>

查阅ASP.NET官方论坛可以看到答案http://forums.asp.net/t/1377657.aspx,我将Script控件属性添加EnablePartialRendering="true" 和 EnableScriptGlobalization="false" 后,一切正常,至此问题全部解决,项目成功部署。
总结:感谢楼下花时间看完我这篇文章,但我查阅了W3C关于html中引用<script>脚本的规范http://www.w3.org/TR/REC-html40/interact/scripts.html#h-18.2.2.3,也未找到<script />这样写法是不符合规范的定义,只看到了提倡尽可能不用闭合标记">"而是用"<"比较好(如“ y < x”比"x > y"好)。
又见留言,再度感谢。但我想表达的意思是,这种写法仅在asp.net环境下会出现问题,如果在php中这样书写<script src='.....' type='text/javascript' />,在apache环境下可以正常运行并得到结果。

时间: 2024-09-17 19:17:56

被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用_javascript技巧的相关文章

js和jquery分别验证单选框、复选框、下拉框_javascript技巧

本文分别介绍了js和jQuery验证单选框(radio).多选框(checkbox).下拉框(select),分享给大家供大家参考,具体内容如下(1).首先说单选框(radio),radio和checkbox一样都是name相同值有多个在获取 radio 值的时候我们不能按照普通文本框.value的方式,而是要判断哪个被选中了. js验证是要用getElementsByName()获取数组js代码如下: <script> function test(){ var sex = document.

JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述_javascript技巧

所以Javascript已经成为了web开发最最基本的要求之一了. 而在现实的敏捷开发中,我们通常会选择一个JS框架来取代繁琐的Native Javascript的编写.你会发现这样会节省很多的时间,写的代码也很清晰便捷.(当然在学生时代的是有也质疑过,用框架会对原生态的 Javascript理解不深入,其实这是多虑了的.在对框架的深入的同时,对原生的js也会理解的更透彻一些.成为一个精明的开发者,两者是相依相偎的.而最好的状态就是想Qzone前端一样,完全按照自己的需求开发出一套JS,CSS框

js和jquery中循环的退出和继续下一个循环_javascript技巧

作为水货,就是学会了1+1=3也要记录一下!错了,是2 学习记录: js中的 for(var i=1;i<5;i++){ if(i==3){ break; // 使用break,弹出2次提示分别为1,2:如果使用continue,则会弹出3次,分别是1,2,4 } alert(i); } 循环,退出循环,使用break:退出当前循环继续下一个循环,使用continue jquery中的each()方法中要实现break,使用return false:continue,使用return true

JS和jQuery使用submit方法无法提交表单的原因分析及解决办法_javascript技巧

昨天,在做一个表单异步提交内容的时候,遇到很奇怪的问题,submit()方法无法进行提交,每次提交都是把 当前给刷新了,网络抓包发现,每次都是 get方式去获取 当前页面,完全没有post 请求,想着以前 遇上这样的问题 都是因为 表单中 有 name 或者 id 这些命名跟submit 有冲突,但是检查了几次,始终没有发现 名字冲突,所以这个可能性被排除. 平常自己做触发按钮,基本不用a 标签,但是昨天不知道什么 问题,竟然用了 a 而且还给了 href 为空,由于这个a 的class 有多个

jquery在Chrome下获取图片的长宽问题解决_javascript技巧

遇到个需要获得图片的长宽的问题.在IE.FireFox下均正常,就TMD在Chrome中不行,网上非有人说可以,然后还归结为是不是Chrome版本问题. 终于的终于,找到了答案. 在大多数情况下,把js代码放到图片标签的后面: 复制代码 代码如下: <img id="test" src="**.jpg" /> <script> alert(document.getElementById("test").width;<

基于jQuery的图片不完全按比例自动缩小_javascript技巧

举例来说 第一种情况:如图片大小为 600×350,显示区域大小为 200×140,如果图片根据目标宽度(200)按比例缩放后大小变成 116,那么显示在 200×140 就会很难看.如下图左 第二种情况:刚好相反,如图片大小为400×400,显示区域同样是200×140,如果图片根据目标高度(140)按比例缩放后大小变成 140,即 140×140,同样难看.如下图右    这时用 jQuery 获取图片大小再判断处理一下就稍微好点:如第一种情况按140高度算出宽度 140×600/350=2

你的jquery ajax无效和你的jquery引入路径有关

当你发现你的jquery ajax无效的时候,不妨使用 fire bug调试一下,这时你会发现,提示"$"无效,为什么会有这种提示呢?可能是你引入jquery.js的路径有问题   Jquery不必多说,你能阅读到该篇文章,肯定知啊都jquery是js框架. 大家在做项目的时候肯定或多或少都需要用到ajax. 而如果用到jquery的ajax,那么就需要将jquery引入到jsp页面. 当你发现你的jquery ajax无效的时候,不妨使用 fire bug调试一下,这时你会发现,提示

jquery表单验证插件(jquery.validate.js)的3种使用方式

这篇文章主要介绍了jquery表单验证插件(jquery.validate.js)的3种使用方式,本文用详细的代码实例讲解jquery表单验证插件的使用,需要的朋友可以参考下     jquery 验证非常简单,下面总结常用的三种方式: 第一种方式:也是比较标准的方式: 首先引入jquery 插件和 jquery 验证插件: 第一步:引入插件 代码如下: <script type="text/javascript" src="js/jquery-1.6.1.min.js

firefox下jquery ajax返回object XMLDocument处理方法

 使用jquery ajax处理struts2 返回json类型的时候,ajax执行成功返回结果为object XMLDocument,解决方法如下 在firefox下使用jquery ajax处理struts2 返回json类型的时候,ajax执行成功返回结果为 [object XMLDocument].    处理办法:在getWriter.print():前面加上一行代码  代码如下: ServletActionContext.getResponse().setContentType("t