zoukankan      html  css  js  c++  java
  • 获取iFrame框架中Form表单提交后的结果

    xhEditor中的方式是:先提交Form表单,Form.submit();然后再设置iFrame加载完成事件,用于获取表单提交成功后的结果,iFrame.load(loadFunc());

    loadFunc方法中,获取表单提交结果的方法如下:Var responseTxt = $(iFrame.contentWindow.document.body).text();

    若responseTxt为Json对象,则可以通过以下方法将该对象序列化:

    Var data = Object;

    try{data=eval('(' + responseTxt + ')');}catch(ex){};

    若iFrame.load(loadFunc())方法无法为iFrame设置onLoad事件,则可以使用iFrame.attachEvent( "onload",loadFunc);

    ======================================================================================

    有时在IE中对动态创建和修改的onload事件函数没有反应,并非iframe不支持onload事件,折中的就是给onload事先绑定一个空函数,有需要时,去修改这个函数的值。

    可能的原因是IE加载到iFrame时,就设置其状态为加载完成,所以不会触发onLoad事件,通过createElement创建的iframe,也是相同原因,创建好iFrame后就已经onload完成,所以以后设定onload事件就不会生效了。针对这个问题可以不使用createElement创建iframe,直接内嵌到一个DIV里,逃过IE的检测,类似如下代码:

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

    newdiv.innerHTML = '<iframe id="iframe1" src ="test.html" onload="test()"></iframe>';

    document.body.appendChild(newdiv);

    该方法适用于IE / Firefox / Opera 浏览器。

    ===============================================================================

    兼容多浏览器的操作iFrame中内容的代码如下:

    function (){
            var doc;
            if (document.all){//IE
                    doc = document.frames["iframe1"].document;
            }else{//Firefox    
                    doc = document.getElementById("iframe1").contentDocument;
            }
            doc.getElementById("title").style.color = "red";
    }
    
  • 相关阅读:
    使用VMWare实现主机一拖二(笔记本分身术)
    Implementing RelativeSource binding in Silverlight
    CLRProfiler V4 Released
    Host WCF on IIS 7.5
    增加智能感知的RichTextBox扩展控件(WPF)
    Troubleshooting Visual Studio 2010 and QT 4.7 Integration
    windows命令行下如何查看磁盘空间大小
    模拟谷歌今日使用的css动画
    粗聊Mysql——你会建库建表么?
    彩票项目难点分析
  • 原文地址:https://www.cnblogs.com/xyd21c/p/2117923.html
Copyright © 2011-2022 走看看