首页 > 解决方案 > iframe 中的表单未定义:边缘问题

问题描述

将值设置为 iframe 中的表单并提交表单。

window.frames['equityIFrame'].document.forms[0].[actionParam] = "equityAction";
window.frames['equityIFrame'].document.forms[0].submit();

此代码在 IE 和其他浏览器中运行良好。

在 Edge 浏览器中,引发以下错误。

无法读取未定义的属性“形式”。

解决这个问题的方法是什么。

标签: javascriptjquerymicrosoft-edge

解决方案


您可以使用它HTMLIFrameElement.contentWindow来访问 iframe 的文档及其内部 DOM。你可以参考我下面的示例代码,它在 Edge 和其他浏览器中运行良好:

iframe.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <iframe src="form.html" id="test"></iframe>
    <input type="button" value="click" onclick="ChangeIframe()" />
    <script>
        function ChangeIframe() {
            document.getElementById("test").contentWindow.document.getElementById("fname").value = "myname";
            document.getElementById("test").contentWindow.document.forms[0].submit();
        }
    </script>
</body>
</html>

表单.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <form action="index.html" method="get">
        <label for="fname">First name:</label>
        <input type="text" id="fname" name="fname"><br><br>
        <label for="lname">Last name:</label>
        <input type="text" id="lname" name="lname"><br><br>
        <input type="submit" value="Submit">
    </form>
</body>
</html>

推荐阅读