zoukankan      html  css  js  c++  java
  • iframe 兼容 ie firefox 提交

    if (form.fireEvent) {
    form.fireEvent('onsubmit');
    form.submit();
    //DOM2 fire event
    } else if (document.createEvent) {
    var ev = document.createEvent('HTMLEvents');
    ev.initEvent('submit', false, true);
    form.dispatchEvent(ev);
    }

    兼容 ie firefox 提交 ie比较特殊,恶心

    ----------------- 下面转载

    今天在项目中无意中遇到的一个神奇的问题,特此记录。

    首先我们看看以下代码,测试页面可以看这里,页面的功能和逻辑很简单。

    这段代码从逻辑上看没有任何错误和BUG,理论上是可以完全执行的。

    <html>
    <head>IE 测试</head>
    <body>
    <script language="javascript">
    /*
    ======================================
    IE 下 submit 重名测试
    作者:朦朧中的罪惡
    博客:http://be-evil.org
    ======================================
    */
    functiondosubmit()
    {
    vartheform = document.getElementById('theform');
    theform.submit();
    }
    </script>
    <formmethod="post"id="theform">
    <tablewidth="800">
    <tr>
    <td><inputtype="text"value="测试"></td>
    </tr>
    <tr>
    <td><inputtype="button"name="submit"value="提交"onclick="dosubmit()"></td>
    </tr>
    </table>
    </form>
    </body>
    </html>

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

    本文系原创文章,转载请注明文章源自思想之地 http://be-evil.org,作者:朦胧中的罪恶

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

    如果用Firefox查看这个页面并点击提交按钮,表单会正常提交,但是我们换到IE下面,IE却会提示"对象不支持此属性和方法" 而停止提交的操作。

    这是怎么回事呢?经过我多方的查找资料,发现是提交按钮的name="submit"的属性在捣乱。

    此时我们将theform.submit();注释掉,新起一行输入alert(theform.submit.value);刷新页面后再次点击提交,弹出的窗口上会显示"提交"两个字,神奇了!theform.submit居然是提交按钮而不是theform的方法了!

    为什么会出现这个问题呢,因为在IE下可以通过 表单.表单元素名称 这样的方式获得一个表单下的所有表单元素,但是巧就巧在这里,如果某个表单元素的名称和表单的方法名重名的话那么IE就会优先将名称解析为某个表单元素,而不是表单的方法,此时就会出现这个神奇的问题了。

  • 相关阅读:
    fiddler教程--拦截并篡改
    string
    希尔排序(缩小增量排序)
    k-选取问题
    完善版本散列表
    c++ BST继承自二叉树
    DEDECMS与DZ论坛如何整合,DEDE网站调用DZ内容
    DEDECMS如何实现定时发布文章
    DEDECMS如何设置图片上传加水印
    DEDE如何制作不同背景的列表
  • 原文地址:https://www.cnblogs.com/backuper/p/1419829.html
Copyright © 2011-2022 走看看