jQuery iframe选择器在开发工具中工作,但没有在页面中



有人可以告诉我为什么以下行从Dev Tool Console起作用,但在页面中不起作用,我一直保持长度为0

$("iframe[name='gridFrame']").contents().find("form[name='grid']").length;

这是页面:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
    <script type="text/javascript" src="/Scripts/jquery-3.1.1.js"></script>
    <script>
    $(function () {
        submitThis();
        function submitThis() {
            var a = $("iframe[name='gridFrame']").contents().find("form[name='grid']").length;
            console.log(a);
        }
     })
    </script>
</head>
<body>
    <iframe name="gridFrame" src="temp-iframe-test.html">
    </iframe>
</body>
</html>

这是iframe文件:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
   <form name="grid">
     <input id="fname" />
   </form>
</body>
</html>

您的submitthis()函数在加载其源之前要触发。这就是为什么您看到长度为0。

尝试添加: onload =" submitthis()"到您的iframe元素中,然后将提交函数移动到全局范围(从$函数出发)。

使用DEV控制台时,您的iFrame自此加载了其文件。