`
lixinlixin2008
  • 浏览: 152400 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

可编辑 iframe, removeChild时, 非IE浏览器, 可编辑状态消失

阅读更多
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<script>
function f1(){
    document.body.removeChild(do01);
}
function f2(){
    document.body.appendChild(do01);
    
//  第一种方法
    meifr01.contentWindow.document.designMode="On";
				meifr01.contentWindow.document.open();
				meifr01.contentWindow.document.write('<html><head><style>html,body{margin:5px;font:12px/1.231 arial;cursor:text;}</style></head><body id="easyrt_body"></body></html>');
				meifr01.contentWindow.document.close();

//    第二种方法,估计得iframe load之后
//    setTimeout(f3,0);
    
}
function f3(){
    meifr01.contentWindow.document.designMode="On";
}

//http://www.v-ec.com/dh20156/code/easyrt/easyrt.html
</script>
</head>


<body onload=init()>
这个bug是这样的,我们常常会用iframe做html编辑器,当iframe离开文档以后,再append进来,这个时候,非IE浏览器下iframe会变成不可编辑的,并且内容全部丢失,
不可编辑这个问题需要重新设置一下iframe,内容丢失就没办法了...
<div id="d001"><iframe id="ifr1"></iframe></div>
<input type="button" value="none" onclick="f1()" />
<input type="button" value="display" onclick="f2()" />
<input type="button" value="edt" onclick="f3()" />
</body>

</html>

<script>
function init(){
    window.do01 = document.getElementById("d001");
    window.meifr01 = document.getElementById("ifr1");
    meifr01.contentWindow.document.designMode="On";
}
</script>





补充,在非IE下,重新appendChild一下iframe,  win和doc都变了, iframe的unload事件也会被触发

by: 天堂左我往右
0
0
分享到:
评论
2 楼 lixinlixin2008 2009-11-04  
当<iframe src="javascript:;"></iframe>时,设置designMode="On";  也无法重新启用iframe可编辑模式...



另外一个问题:
引用以前的iframe的document对象,例如 var _doc = meifr01.contentWindow.document;  然后将iframe移除文档,再appendChild进来,
alert(_doc==meifr01.contentWindow.document)
结果:false


appendChild一下,document不同了...
1 楼 lixinlixin2008 2009-11-02  
发现还有一种情况下这样设置也没有用...还没找到是什么原因...

相关推荐

    QTreeWidget实例,项可拖动、可编辑,创建、删除项,Qt读写Xml等

    在QTreeWidget中实现项的可编辑性,我们需要设置QTreeWidgetItem的 flags() 方法,允许用户编辑其文本。例如: ```cpp QTreeWidgetItem *item = new QTreeWidgetItem(); item-&gt;setText(0, "Item Name"); item-&gt;...

    CSS防止iframe挂马

    对于非IE浏览器,可以考虑使用JavaScript来实现相似的效果,例如: ```javascript document.querySelectorAll('iframe').forEach(iframe =&gt; { iframe.src = 'about:blank'; iframe.parentNode.removeChild(iframe...

    JS动态添加iframe的代码

    上述代码尝试通过字符串形式创建iframe,如果发生错误(如在非IE浏览器中),则会捕获异常并使用正常的创建方式。为了应对所有可能的兼容性问题,我们还需要检测浏览器版本,并根据浏览器的不同选择不同的代码路径:...

    javascript removeChild 导致的内存泄漏

    在Web开发中,尤其是在使用JavaScript进行DOM操作时,不恰当的节点移除可能导致内存泄漏问题,特别是针对IE浏览器。 首先,我们要理解JavaScript中DOM的操作原理。DOM是文档对象模型(Document Object Model)的...

    js复制文本(兼容IE、火狐)

    在JavaScript编程中,复制文本是一项常见的需求,尤其是在网页交互和用户...这就是JavaScript实现文本复制功能,同时兼容IE和火狐浏览器的基本思路和代码实现。在实际项目中,你可能需要根据具体需求进行调整和优化。

    iframe如何动态创建及释放其所占内存

    然而,不当使用`iframe`可能会导致浏览器内存占用过高,尤其是在旧版本的IE浏览器中。本文将探讨如何动态创建`iframe`以及如何有效地释放其占用的内存。 首先,我们来看如何动态创建`iframe`。动态创建`iframe`的...

    js实现可编辑表格,可以直接运行

    在JavaScript(简称JS)中创建一个可编辑的表格是一个常见的需求,特别是在网页应用中,用户可能需要直接在页面上修改数据。本项目提供了一个这样的解决方案,允许用户通过单击单元格来激活编辑模式,按下回车键即可...

    js removeChild 方法深入理解

    2. 内存中的节点:当节点被removeChild方法移除之后,节点对象并不会立即从内存中消失。如果你没有其他变量引用这个节点,JavaScript的垃圾回收机制最终会回收它。但是如果保留对节点的引用,那么它将继续占用内存...

    IE下使用cloneNode注意事项分享

    这种行为在非IE浏览器中并不发生,它们通常只会执行原始的`script`脚本一次。 在IE浏览器中,特别是IE8及以下版本,克隆一个包含`script`节点的节点时,`script`的脚本内容可能被再次执行。这可能会导致代码冲突、...

    JavaScript的removeChild()函数用法详解

    在Web开发中,操作DOM元素是日常任务之一。JavaScript提供了很多方法来添加、修改或删除DOM元素。本文主要介绍的是JavaScript中的...通过对removeChild()函数的深入理解和熟练应用,可以提高代码的可维护性和执行效率。

    vue项目中在可编辑div光标位置插入内容的实现代码

    在Vue项目中,有时我们需要在可编辑的div元素中实现用户能够插入内容的功能。这个功能在文本编辑器或者富文本编辑场景中非常常见。本文将详细介绍如何在Vue中实现在可编辑div的光标位置插入内容,并提供相关代码示例...

    js调用iframe实现打印页面内容的方法

    // 针对IE浏览器,删除IFrame if (navigator.userAgent.indexOf("MSIE") &gt; 0) { document.body.removeChild(iframe); } } ``` #### HTML调用 ```html // 打印区域 …… // 调用打印按钮 ('print_box');"&gt;打印 ...

    javascript移出节点removeChild()使用介绍.docx

    2. **异常处理**:当尝试移除的子节点不存在于父节点中时,`removeChild()`会抛出异常。因此,在调用该方法前最好先检查子节点是否存在于父节点中。 3. **事件监听器清理**:如果被移除的节点上有绑定的事件监听器...

    iframe的src设置为about:blank之后细节探讨

    4. **删除 `iframe`**:除了清空内容,如果不再需要 `iframe`,可以通过 `document.body.removeChild(el)` 删除 `iframe` 元素,进一步释放内存和DOM树中的引用。 5. **安全性**:在某些情况下,`about:blank` 也...

    前段JS开发和DOM兼容问题大全

    7. IE浏览器中,input标签的type属性是只读的,而在Firefox中是可读写的。在编写代码时,需要注意此属性在不同浏览器中的行为差异。 8. IE浏览器中`getElementsByName`和`document.all[name]`不能用来取得div元素,...

    js获取电脑名、ip、mac(ie&火狐)

    在IE浏览器中,JavaScript可以通过ActiveXObject对象来访问Windows API,获取电脑的一些基本信息。`ActiveXObject`是IE特有的,允许JavaScript与COM组件交互。以下是一个示例代码片段,用于获取电脑名称: ```...

    javascript移出节点removeChild()使用介绍

    removeChild(a)是用来删除文档中的已有元素 参数a:要移出的节点 代码如下: ”guoDiv”&gt; &lt;span&gt;1&lt;/span&gt; &lt;span&gt;2&lt;/span&gt; &lt;span&gt;3&lt;/span&gt; &lt;/div&gt; var oDiv = document.getElementById(“guoDiv”); var firsChild = ...

    DOM节点删除函数removeChild()用法实例

    这个实例展示了`removeChild()`函数如何在实际场景中使用,以及在处理动态网页内容时的重要作用。通过理解这个函数的工作方式,开发者可以更有效地管理DOM结构,根据需要添加、删除或更新元素,从而实现交互性和功能...

    js removeChild 障眼法 可能出现的错误

    在JavaScript中,`removeChild()`方法是用来移除DOM树中指定元素的一个重要函数。这个方法在处理动态DOM操作时非常常见,特别是在删除列表项、节点等元素时。然而,不恰当的使用`removeChild()`可能会导致一些错误或...

    javascript删除元素节点removeChild()用法实例

    本文实例讲述了javascript删除元素节点removeChild()用法。分享给大家供大家参考。具体分析如下: 操作DOM节点的方法:removeChild(),移除子节点,那么可以变通一下来实现移除指定的节点,我们可以先去找到要删除...

Global site tag (gtag.js) - Google Analytics