整合jQuery和Prototype遇到的问题.
由于项目要在旧的服务器上面运行,而旧的服务器底层用了Prototype,所以需要解决jQuery和Prototype冲突的问题。
一.$符号冲突问题
这个还是很好解决的。
jQuery.noConflict()
而如果不想将原来所有$符号换成jQuery,可以用即时函数包住原来的jQuery代码:
(function($){ })(jQuery); jQuery(document).ready(function($){ }); jQuery(function($){ });
二. for in 数组循环问题
for in 语句本身并不是一个 "bad practice",但是却容易被误用,比如用在数组上。
使用for in语句首先要注意,如果不能百分百确定,那么请使用hasOwnProperty:
for (var prop in obj) { if (obj.hasOwnProperty(prop)) { // prop is not inherited } }
其次,不要用for in对数组或类数组对象(array-like)。由于Prototype会自动为所有数组添加一推属性,即使用上面hasOwnProperty的方式也无法过滤。不过可以用下面这种方式:
for (var prop in obj) { if (Object.prototype.hasOwnProperty.call(obj, prop)) { // prop is not inherited } }
三. IE弹框问题 “Stop running this script”
这是一个很奇怪的问题。原来的框架在IE没有问题,但是导入Prototype之后,IE弹框
Stop running this script? A script on this page is causing your web browser to run slowly. If it continues to run, your computer might become unresponsive.
对于这个问题完全摸不着头脑,通过删除引入文件终于找到罪魁祸首,一个两万多行的文件。一开始还以为里面某个语句导致了这个问题,但是发现并不是。将文件分成两个文件后,就没有出现这个弹框了。
整合jQuery和Prototype遇到的问题.的更多相关文章
- 主流JavaScript框架(Dojo、Google Closure、jQuery、Prototype、Mootools和YUI)的分析和对比
本文主要选取了目前比较流行的JavaScript框架Dojo.Google Closure.jQuery.Prototype.Mootools和YUI进行对比,主要是根据网上的资料整理而成,希望可以供 ...
- 事件代理总结: 已经有一些使用主流类库的事件代理示例出现了,比如说jQuery、Prototype以及Yahoo! UI。你也可以找到那些不用任何类库的例子,比如说Usable Type blog上的这一个。一旦需要的话,事件代理将是你工具箱里的一件得心应手的工具,而且它很容易实现。
如果你想给网页添加点JavaScript的交互性,也许你已经听过JavaScript的事件代理(event delegation),并且觉得这是那些发烧友级别的JavaScript程序员才会关心的什么 ...
- Struts2 整合jQuery实现Ajax功能(1)
技术领域非常多东西流行,自然有流行的道理.这几天用了jQuery,深感有些人真是聪明绝顶,能将那么多技术融合的如此完美. 首先明白个概念: jQuery是什么:是使用javascript语言开发的,用 ...
- 解决jquery和prototype库冲突问题
在项目中同时引入了jquery.js和prototype.js两个文件,在方法调用时启了冲突. 我们在使用 jQuery 的过程中我们会频繁使用 $ 符号,$是JQuery的别名,所有使用$的地方也都 ...
- 解决Jquery和prototype的兼容问题
1. 引入jquery 时,将jquery库在 prototype之前引入: 2.使用时: jQuery.noConflict(); // 这个要在 之前加上 3.初始化加载 (这里我试过,可以有两 ...
- JavaScript中解决jQuery和Prototype.js同时引入冲突问题
两个库同时都定义了一个叫$的函数,所以在同时使用的时候会发生冲突.jQuery( http://jquery.com/ https://jquery.org/ )中提供了一种返还$的使用权给其他js库 ...
- jQuery 与 prototype 共存
方法一: <html> <head> <script src="prototype.js"></script> ...
- jQuery和Prototype的兼容性和冲突的五种解决方法
第一种情况:先加载Prototype,再加载jQuery方法一:jQuery 库和它的所有插件都是在jQuery名字空间内的,包括全局变量也是保存在jQuery 名字空间内的. 使用jQuery.no ...
- asp.net使用母版页以及Jquery和prototype要注意的问题
在母版页中引用了js,css或者其他外部文件之后,子页面就不必再重新引用,否则可能出错 prototype.js和jquery.js冲突的解决方案: <script type="tex ...
随机推荐
- centos的软件安装方法rpm和yum
centos的软件安装大致可以分为两种类型: [centos]rpm文件安装,使用rpm指令 类似[ubuntu]deb文件安装,使用dpkg指令 [centos]yum安装 类似[ubuntu ...
- [Flex] PopUpButton系列 —— 设置弹出菜单与主按钮之间的间隔
<?xml version="1.0" encoding="utf-8"?><!--设置弹出菜单与主按钮之间的间隔 PopUpButtonPo ...
- [Flex] Accordion系列 - Header图标的设置
<?xml version="1.0" encoding="utf-8"?> <!--Flex中如何通过getHeaderAt()函数以及se ...
- jquery ui autocomplete combox格式设置
<style> .custom-combobox {//设置输入框格式 position: relative; display: inline-block; width: 62%; } . ...
- HTML readyState 属性 iframe onreadystatechange事件
-----------readyState--------------- 定义和用法 readyState 属性返回当前文档的状态(载入中……). 该属性返回以下值: uninitialized - ...
- java利用过滤器实现编码的转换,内容输出的替换
在页面建个表单 <form action="login.do" method="post"> <input type="text&q ...
- 求bat文件创建mysql数据库,并调用一个SQL文件的代码
@echo off set path=C:\program files\mysql\mysql server 5.5\bin cd ./ set CURR_PATH=%cd% mysql -h loc ...
- vim 配合管道过滤多行记录
vim打开一个日志 有很多冗余信息,你只想看到一部分的内容,怎么办? 在normal模式输入 :%!grep xxx 这样,所有含有xxx的行才会被保留下来,其它行都不见了.. 或者,你想干掉所有包含 ...
- Java 开发 gRPC 服务和客户端
新建一个普通的Maven项目: 配置pom文件,导入gRPC的依赖和插件 pom 中增加外部依赖 <dependency> <groupId>io.grpc</g ...
- 判断Windows操作系统的版本
private void Form1_Load(object sender, EventArgs e) { if (!IsWin7()) { Application.Exit(); } } bool ...