问题:如果在frame、iframe页面中使用了setStyle()方法后(貌似还不止这个方法有问题),或者使用了script.aculo.us的特效的话,会导致self.name混乱(也就是框架本身的名字),这样的话用链接元素的target指定到这个框架就没效果了,浏览器将按默认行为在新窗口中打开!
解决办法:
1、升级Prototype和Script.aculo.us到最新版本(1.6、1.8),经测试已无bug。
2、自己打补丁,很容易,但比较麻烦,总的思想就是,在做了可能引起bug的操作后,自行恢复iframe的self.name。
首先,不使用setStyle()方法改变元素样式,转而用传统的element.style.xx;
然后,在用到script.aculo.us特效的地方,设置其结束的回调函数,比如afterFinish,在其中做恢复self.name操作。当然,这 个方法不是无懈可击的,因为在特效运行的过程中,还是存在问题,所以说升级版本才是王道,1.6版做了很大的改进,可以说将会改变之前写 javascript代码习惯,我个人是非常期待的。
附上一个简单的恢复窗体名称的办法:
js 代码
-
- var frame_name = self.name;
-
-
- function fixTarget(){
- if(self.name != frame_name) { self.name = frame_name; }
- }
页面一加载就执行这段代码,以后便可通过fixTarget函数来恢复了。有个找抽的办法,你可以起一个定时器,定时执行这个函数,如果间隔短点的话,效果应该也还不错,当然,你付出的代价就是客户的内存......
分享到:
相关推荐
《Prototype 1.6 手册》是针对 Prototype JavaScript 框架的一个详细参考资料,它主要涵盖该框架在 1.6 版本中的各种 API 和功能。Prototype 是一个广泛使用的 JavaScript 库,旨在简化 DOM 操作,提供强大的类和...
Prototype提供了一套简洁的API来操作DOM(文档对象模型),如`Element.extend`用于添加元素方法,`$$`函数用于选择多个DOM元素,以及`Element.hide`和`Element.show`用于隐藏和显示元素。 3. **事件处理**: 它...
此外,Prototype还提供了许多其他实用的方法,如`Element.extend`用于扩展DOM元素,`Element.hide`和`Element.show`控制元素的可见性,`Element.update`用于替换元素的内容,以及`Element.setStyle`和`Element....
此外,`Element.hide()`和`Element.show()`分别用于隐藏和显示元素,`Element.setStyle()`允许动态改变元素的样式。 ### 3. Ajax 支持 Prototype 强大的Ajax功能使得与服务器进行异步交互变得简单。`Ajax.Request`...
**Element对象**:Prototype定义了一系列与DOM元素相关的辅助方法,如`Element.extend()`, `Element.hide()`, `Element.show()`, `Element.toggle()`, `Element.setStyle()`等,它们直接操作DOM元素,极大地提高了...
8. **样式的操作**:`Element.setStyle`和`Element.getStyle`等方法使得操作元素样式变得简单,无需直接操作CSS。 深入理解Prototype.js,不仅仅是掌握一个库,更是提升JavaScript编程技巧的过程。通过对源码的学习...
此外,`Element.extend`可以扩展元素的功能,`Element.hide/show/toggle`控制元素的显示状态,而`Element.setStyle/addClassName/removeClassName`则用于修改元素样式和类名。 ### 2. 动态脚本和样式加载 ...
6. **样式操作**:Prototype 提供了 `Element.Style` 对象,允许开发者直接操作CSS样式,如 `Element.setStyle` 和 `Element.getStyle`。 ### 二、Prototype Ajax 在Prototype中,`Ajax`模块是处理异步请求的关键...
1. **Element**:Element模块提供了丰富的DOM操作接口,如`$(selector)`选择元素,`element.setStyle`设置样式,`element.appendChild`添加子元素等。 2. **Selectors**:MooTools支持CSS选择器,如`$$('div.some-...
- **元素操作**:提供了一系列方便的DOM操作方法,如`Element.append()`、`Element.empty()`、`Element.setStyle()`等,用于添加、移除或修改元素。 3. **事件处理** - **事件绑定**:使用`addEvent`方法为元素...
3. **样式操作**:动态修改元素的CSS样式,包括添加、删除或修改样式规则,如`element.setStyle('width', '200px')`。 4. **事件处理**:绑定和解绑DOM事件,如`element.addListener('click', function(){...})`。 ...
以下是一些关键的步骤和代码片段: 1. **开启双缓冲**:在窗体或控件初始化时,可以通过`SetStyle`方法设置控件样式,启用双缓冲。如下所示: ```csharp this.SetStyle(ControlStyles.AllPaintingInWmPaint, ...
this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true); // Enable the OnNotifyMessage event so we get a chance to filter out // Windows messages before they...
//设置样式 this.setStyle = function(name, value) { eval(“this.element.style.” + name + ” = ‘” + value + “‘”); } //获取样式 this.getStyle = function(name) { return eval(“this.element....
- `Element.setStyle()`和`Element.getStyle()`:设置和获取元素的样式属性。 - `Element.fade()`和`Element.slide()`:实现淡入淡出和滑动效果。 **五、miftree与MooTools结合使用** miftree是基于MooTools构建的...
当通过这种方式获取元素引用时,Prototype会自动将 `Element.Methods` 中的所有方法添加到该元素中。如果传入的是一个字符串,则会自动获取带有指定ID的元素的引用;如果传入的是指向元素的引用,则会返回同一个引用...
这个过程中,可能会使用到`Element.observe`来绑定事件,`Element.setStyle`或`Element.resize`来改变元素尺寸。 在实现图片放大弹出层的效果时,一般会用到模态对话框或者浮动层的概念。例如,可以创建一个隐藏的...
paint.setStyle(Paint.Style.STROKE); // 抗锯齿 paint.setAntiAlias(true); // 防抖动 paint.setDither(true); paint2 = new Paint(); paint2.setColor(Color.GREEN); paint2.setStyle(Paint.Style.FILL);...
它基于原型(Prototype)和类(Class)的系统,允许创建可复用的组件和对象。在MooTools中,你可以定义自己的类,通过继承已有的类来扩展功能。 对于文本框提示信息的实现,我们可以创建一个自定义的Input提示插件...
以下是一个简单的案例对比,以帮助理解这两种不同的实现方式: **使用自执行函数和伪命名空间**: ```javascript (function() { function $(id) { return document.getElementById(id); } function _setStyle...