`

关于iFrame动态创建函数

 
阅读更多
    http://asers.blog.sohu.com/79448433.html
    目前的ajax技术还不能支持文件上传(仅仅用于IE的方式就不能算作有了),因此很多时候,在文件上传的时候需要使用iframe,更多的时候都是通过document.createElement来创建。看下面的代码:

var ifr = document.createElement('iframe');

ifr.onload = function() { alert('ok'); }

with(ifr){

style.width = "200px";

style.height = "200px";

src = http://www.baidu.com;

}

document.body.appendChild(ifr);

这个时候,在firefox下面可以看到弹出的Alert信息,但是Ie却没有任何反应,原因分析来分析去还是没有非常好的解释。有一个比较折中的办法是通过修改函数来动态的修改在页面中静态创建的iframe的onload事件:

<html>...<body>

<iframe id="ifr" width="200px" height="200px" src="about:blank" onload="test()"></iframe>

<p><a href="#" onclick="go()">test</a></p>

</body></html>

<script>

var test = function() {}

function go() {

test = function() { alert('ok');}

document.getElementById('ifr').src = http://www.baidu.com;

}

</script>

在IE中测试可以知道,并非iframe不支持onload事件,而是对动态创建和修改的onload事件函数没有反应,那么折中的就是给onload事先绑定一个空函数,在需要时,去修改这个函数的值。(js的函数其实就是存储了一段代码的变量而已)。那么这样可以达到修改onload的效果。

一个我自己也不十分明确的说法是,ie在检测到iframe的时候,似乎就把他的状态设为完成了,通过createElement创建的iframe,似乎在创建的一瞬间他的onload就完成了,后面的onload设定大概也就无效了,既然如此可以跳过这个步骤,不使用createElement创建iframe,逃过IE的检测。看下面的代码:

var myifr = document.createElement('div');

myifr.innerHTML = '<iframe id="myifr" src = http://www.baidu.com width="200px" height="200px" onload="test()"></iframe>';

document.body.appendChild(myifr);

测试成功,函数被执行了。今天碰到这个问题,在网上搜了好久没有很好的解决办法,现在把自己的办法贴出来。这些方式在 IE / Firefox / Opera 中测试通过。
分享到:
评论

相关推荐

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

    本文将探讨如何动态创建`iframe`以及如何有效地释放其占用的内存。 首先,我们来看如何动态创建`iframe`。动态创建`iframe`的方法通常是通过JavaScript来完成的,这样可以在需要时创建,不需要时销毁,以减少不必要...

    Jquery实现iframe功能

    然后,我们可以通过jQuery来动态改变iframe的src属性,实现加载不同页面的功能。例如,当用户点击一个按钮时,我们可以这样做: ```javascript $("#loadButton").click(function() { var url = ...

    iframe自适应高度js demo

    以下是一个简单的JavaScript函数示例,该函数动态地设置`iframe`的高度: ```javascript function setIframeHeight(iframeId) { var iframe = document.getElementById(iframeId); if (iframe && iframe....

    iframe拖动功能..........

    这种功能在需要创建可自定义布局或者需要动态调整`iframe`显示区域的应用中非常实用。 要实现`iframe`拖动,我们需要借助JavaScript和HTML的交互。以下是一些关键知识点: 1. **HTML结构**:首先,在HTML中设置`...

    iframe 跨域解决方法

    通过动态创建`&lt;script&gt;`标签,其`src`指向返回JSON数据的服务器接口,服务器返回的代码是一个函数调用,将JSON数据作为参数。 5. **`Window.proxy`**:在`iframe`的源页面中定义一个全局函数,如`window.proxy = ...

    javascript写的可拖动的iframe

    这个类可能包含初始化方法、事件监听器(如`mousedown`、`mousemove`和`mouseup`)以及更新iframe位置的函数。例如: ```javascript class DraggableIframe { constructor(iframe) { this.iframe = iframe; this...

    js动态创建上传表单通过iframe模拟Ajax实现无刷新

    动态创建上传表单并通过...以上就是关于“js动态创建上传表单通过iframe模拟Ajax实现无刷新”的主要知识点。通过掌握这些技术点,可以实现无刷新上传文件并在前端界面得到即时的反馈,提高应用的交互性和用户体验。

    iframe 实现页面跳转 动态改变主题

    "iframe实现页面跳转"这个话题涉及到如何利用iframe来实现在不刷新整个页面的情况下,动态加载不同的网页内容,从而提供更好的用户体验。 首先,iframe的使用方式是在HTML代码中插入`&lt;iframe&gt;`标签,指定其`src`...

    JQUERY实现iframe页面切换功能

    本篇文章将详细讲解如何利用jQuery实现iframe页面的切换功能,以便于创建更丰富的用户体验和更高效的页面加载策略。 首先,我们需要理解iframe的基本概念。Iframe(Inline Frame)是HTML中的一个元素,它允许我们在...

    iframe里无右键菜单

    标题"iframe里无右键菜单"正是针对这一需求,描述中提到的解决方案是创建一个既简单又实用的方法来实现这一功能。 `contextmenu`是HTML5中的一个事件,它与右键菜单相关。当用户在页面上执行右键点击时,浏览器会...

    外部滚动条控制iframe

    3. **同步iframe内部滚动位置**:在事件处理函数中,根据外部滚动条的位置,使用JavaScript设置iframe内部文档的滚动位置。这通常通过修改`iframe.contentDocument.body.scrollTop`或`iframe.contentWindow.scrollTo...

    完美解决iframe跨域问题

    通过动态创建`&lt;script&gt;`标签,利用回调函数来传递数据。 5. **CORS(Cross-Origin Resource Sharing)**:服务器端设置`Access-Control-Allow-Origin`响应头,允许特定的跨域请求。但这种方法需要服务器端的配合,...

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

    通过上述介绍,我们可以了解到使用JS调用iframe实现页面内容打印的方法主要分为以下几个步骤:准备打印内容、创建并配置iframe、调用打印功能以及处理打印后的清理工作。这些技术手段为网页开发者提供了灵活的方式来...

    java iframe应用 jsp j2ee

    例如,创建一个Servlet来处理IFrame请求: ```java @WebServlet("/iframeContent") public class IframeContentServlet extends HttpServlet { protected void doGet(HttpServletRequest request, ...

    js实现iframe自适应高度

    在网页开发中,`iframe`(Inline Frame)是一种嵌入其他网页的标签,常用于页面模块化、加载外部内容或创建多窗口体验。然而,`iframe` 的一个常见问题是其内容区域的高度可能超过其本身的显示区域,导致滚动条出现...

    JS动态添加iframe的代码

    JS动态添加iframe的代码是一种前端编程技术,主要用在网页中动态创建并嵌入iframe元素。该技术在制作弹出窗口、广告模块或者嵌入第三方网页时尤其有用。在本文中,将介绍几种不同的方法来实现JS动态添加iframe的功能...

    iframe自适应子页面内容高度

    在网页开发中,`iframe`(Inline Frame)是一种嵌入式框架,用于在单个HTML文档中显示其他HTML文档...通过以上方法,我们可以创建一个流畅的用户体验,让用户在浏览页面时无需滚动主页面就能查看`iframe`中的全部内容。

    jquery 跨iframe拖拽

    总结,"jquery 跨iframe拖拽"是利用jQuery和jQuery UI的拖拽功能,结合跨IFrame通信技术,实现元素在不同IFrame之间的动态交互。虽然涉及的技术点较多,但正确理解和运用这些工具,可以为用户带来更丰富的交互体验。

    iframe弹窗工具类

    1. **创建和插入iframe**:工具类会包含一个方法,用于动态创建`iframe`元素,并将其插入到文档的指定位置。这可能涉及到DOM操作,如`document.createElement('iframe')`来创建`iframe`,然后通过`appendChild`或`...

    flex-iframe-1.4.1.zip

    例如,可以使用以下HTML和JavaScript代码创建一个动态加载的iframe: ```html &lt;!DOCTYPE html&gt; &lt;script src="path/to/flex-iframe.min.js"&gt; &lt;div id="iframe-container"&gt; var iframe = new FlexIframe({ ...

Global site tag (gtag.js) - Google Analytics