今天解决一个bug时花了很长时间分析定位。
起因是我们自己写了一个tab函数,用来支持网页上分tab显示内容,可以局部更新,支持缓存和刷新。
但是后来发现,refresh content的时候采用AJAX方式取数据,而数据中的js脚本并不会执行。一开始不知道为什么会这样,我一直以为只要设置innerHTML就会执行包含的js,单独写了两个页面用prototype的Ajax.updater试验,也是可以执行的,真是搞不懂。
前辈教导我们,搞不定的时候读源码永远是一个好主意。于是看prototype──哦,原来如此:
javascript 代码
- update: function(element, html) {
- html = typeof html == 'undefined' ? '' : html.toString();
- $(element).innerHTML = html.stripScripts();
- setTimeout(function() {html.evalScripts()}, 10);
- return element;
- },
设置innerHTML时并不会做什么js的执行工作,其实是prototype帮我们完成了工作。真是实践中凝结的代码阿,它专门扩展了String类,添加了
stripScripts和evalScripts,让我们方便许多。
嗯,看来我这个半瓶子水还是要多看看源码的。
分享到:
相关推荐
1. **对象扩展**:Prototype扩展了JavaScript的基本对象,如Array、String、Function等,提供了许多实用的方法,使得操作更加便捷。例如,Array对象添加了`each()`方法,可以方便地遍历数组。 2. **DOM操作**:...
在网页设计中,Tooltip是一种非常实用的交互元素,它可以在用户将鼠标悬停在某个元素上时显示额外的信息。在HTML中,我们通常通过给元素添加`title`属性来实现基本的Tooltip效果,但这确实存在一些限制,比如不支持...
原型软件开发对比 在软件开发过程中,原型开发工具扮演着非常重要的角色,它可以帮助开发者快速建立和...Prototype Composer是Serena公司免费提供的原型开发工具,功能确实强大,提供了基于项目管理主要流程的产出物。
"Javascript代码收藏大全1"显然是一个集合了各种实用JavaScript代码片段的资源库,对于开发者来说,这样的资源非常宝贵,能够节省时间并提高工作效率。这个压缩包包含四个文档,分别命名为"Javascript代码收藏大全1....
- prototype:原型或雏形,是产品设计的初期模型。 - discipline:学科,如计算机科学或软件工程。 - mythical:神话的,有时用于描述虚构或理想化的概念。 - peculiarly:特有地或特别地,强调独特性。 - epsilon:...
这是一个非常实用的函数,用于迭代数组或对象。在使用`jQuery.each()`遍历数组时,如果在回调函数中返回`false`,它会停止当前的迭代,相当于`break`语句,即立即退出整个循环。以下是一个示例: ```javascript var...
JavaScript中的`arguments`对象是一个非常实用的特性,它允许开发者在函数中动态处理传入的参数,无论参数的数量是否已知。以下是对`arguments`对象的详细解释: 1. **`arguments`对象的定义** `arguments`是...
`hasOwnProperty()`方法就是一个非常实用的工具,它允许我们在不使用循环的情况下,判断对象中是否存在某个属性。 在提供的实例中,我们有一个名为`aaa`的对象,它包含了一些用数字和字符串作为键的值: ```...
JavaScript中的`indexOf`方法是一个非常基础且实用的函数,它用于查找数组或者字符串中指定元素的位置。在字符串中,`indexOf`返回给定子字符串的第一个出现的索引;在数组中,它返回与给定值相等的元素的第一个索引...
JavaScript中的hasOwnProperty方法是一个非常实用的内置对象方法,用于检查对象是否包含特定的自身属性(不包括从原型链继承的属性)。当我们需要遍历一个对象的所有属性时,通常会使用for...in循环。然而,使用for....
如果你确实需要修改参数,建议将`arguments`的内容复制到一个新的数组上操作,比如使用`Array.prototype.slice.call(arguments)`: ```javascript var args = Array.prototype.slice.call(arguments); args.shift()...
设计模式之 Prototype(原型) 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 B. 结构模式 设计模式之 Adapter(适配器) 使用类再生的两个方式:组合(new)和继承(extends),这个已经在 ...