我有一个包含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&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正在提交表单,一切正常。
有人可以告诉我为什么会出现此问题,或者至少可以找到该问题的替代解决方案吗?我希望提供所有必需的信息。让我知道,如果您需要任何其他详细信息。
答案 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
是否来自其他来源。