表单提交不在Google Chrome中间歇性地进行

时间:2018-09-11 18:03:54

标签: javascript jquery html forms google-chrome

我有一个包含iFrame的网页。此网页自动向第三方网址提交表单,该表单会将内容加载到iFrame中。我目前正在通过jQuery在document.ready()上自动提交表单,看起来chrome不会间歇性提交此表单。

下面是我网页中的示例html。

<form id="form_init" target="myFrame" action="https://somethirdpartyurl.com/req.jsp?queryParam=value" method="post" class=" edit accessAid">
    <input name="_cs" id="_cs2" value="blah" type="hidden">
    <input name="cs" id="cs2" value="blah" type="hidden">
    <input type="hidden" name="howdy" value="oneMoreBlah">
    <input type="hidden" name="myUrl" value="http://localhost:8000/myapp?_eventId=processing&amp;sessionId=123">
    <input type="hidden" name="MD" value="1234567891234567">
    <div id="submit_button">
        <p>Attention: This form can't be displayed because JavaScript is disabled in your browser.</p>
        <p class="buttons">
            <span class="buttonAsLink">
                <input type="submit" name="" class="button autoSubmit" value="Click here to continue">
            </span>
        </p>
    </div>
</form>

<iframe name="myFrame" id="myFrame" width="625px" height="480px" frameborder="0" marginheight="0" scrolling="auto" src="https://www.mywebsite.com/grey_spacer.gif"></iframe>

<script src="http://www.localhost:8000/myapp/webstatic/js/loadFrame.js" type="text/javascript"></script>

下面是loadFrame.js文件的代码段。

$(document).ready(function() {
    $("#submit_button").length && ($("#submit_button").hide(), $("#submit_button input").hasClass("autoSubmit") && $("#submit_button input")[0].form.submit());
});

请注意,$("submit_button input")[0].form.submit()命令之前的所有条件均成功。我已通过控制台日志确认了这一点。

我现在面临的问题是,chrome无法间歇提交上述表格。在其他浏览器(如FireFox和Safari)中不存在此问题。

一个观察结果是,当我打开开发人员工具并检查“禁用缓存”选项时,大多数情况下表单未提交。如果我取消选中该选项,则大多数表单都将提交。 (在大多数情况下都是这样,不是全部)

另一件事是,当我在控制台中手动执行同一命令$("submit_button input")[0].form.submit()时,chrome正在提交表单,一切正常。

有人可以告诉我为什么会出现此问题,或者至少可以找到该问题的替代解决方案吗?我希望提供所有必需的信息。让我知道,如果您需要任何其他详细信息。

2 个答案:

答案 0 :(得分:4)

在iframe中加载about:blank或通过iframe的onload函数提交表单。

iframe的src中提供的图像加载可能正在中断表单提交。

答案 1 :(得分:0)

尝试通过更改此内容来听取赛义德的建议

$(document).ready(function() {
    $("#submit_button").length && ($("#submit_button").hide(), $("#submit_button input").hasClass("autoSubmit") && $("#submit_button input")[0].form.submit());
});

对此

$(top.myFrame).load(function() {
    $("#submit_button").length && ($("#submit_button").hide(), $("#submit_button input").hasClass("autoSubmit") && $("#submit_button input")[0].form.submit());
});

不确定iframe是否来自其他来源。