javascript-尝试使用iframe提交表单时在Safari上的奇怪行为
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-尝试使用iframe提交表单时在Safari上的奇怪行为,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2473字,纯文字阅读大概需要4分钟。
内容图文
![javascript-尝试使用iframe提交表单时在Safari上的奇怪行为](/upload/InfoBanner/zyjiaocheng/661/843635fbf6b642c3a3d919e9eceb12b7.jpg)
我正在使用基于框架的机制来提交我的登录信息,并且它在除Safari(5.1.7)之外的所有浏览器上均能正常工作.
这是我用来提交信息的HTML表单
<form:form action="${loginActionUrl}" method="post" commandName="loginForm" id="header-signin" target="loginFrame" name="header-signin">
<input type="text" name="j_username" id="header-signin_j_username">
<input type="password" name="j_password" id="header-signin_j_password">
<input type="button" class="btn1" value="Sign In" id="login" formnovalidate="formnovalidate" onclick="JavaScript:triggerSigin('header-signin');" />
</form:form>
这是我使用JQuery提交表单的脚本
document.getElementById('header-signin_j_password').onkeydown = function(event) {
if (event.keyCode == 13) {
triggerSigin(this.form.id);
}
}
function triggerSigin(formID){
if(validateSigninForm(formID)){
$( "#"+formID).submit();
}
}
一切都很简单,没有任何复杂的逻辑,我已经在所有可用的浏览器上对其进行了测试,并且运行良好,但是在Safari上,它的运行方式非常奇怪
>输入密码后,如果我按Enter键,则登录过程运行正常.
>如果我填写每个字段并单击登录按钮,则Safari将打开一个新选项卡,并且表单将使用用户名和密码字段作为空提交到服务器.
如果我关闭额外的窗口,然后再次单击“登录”按钮,则一切正常,直到我退出并再次尝试登录系统.
我不确定为什么Safari会打开一个新的浏览器窗口以及为什么表单数据被提交为null,这种行为仅是第一次发生,并且随后单击“签名”按钮的效果很好,直到我关闭浏览器并打开它再次.
谁能帮我理解这个问题
最终输出
<iframe height="0" width="0" frameborder="0" scrolling="no" name="loginFrame" hidden="true"> </iframe>
<form id="header-signin" name="header-signin" action="https://localhost/customer_login" method="post" target="loginFrame">
<div class="field-container">
<label for="username">User Name</label>
<input type="text" name="j_username" id="header-signin_j_username">
</div>
<div class="field-container">
<label for="password">Password</label>
<input type="password" name="j_password" id="header-signin_j_password"> <a href="/login/pw/request/external" class="forgot">Forgot password?</a>
</div>
<input type="submit" class="btn1" value="Sign In" id="login" formnovalidate="formnovalidate" onclick="JavaScript:return validateSigninForm();">
</form>
我不确定
>为什么当我按下Enter键时,该功能在Safari中起作用,以及单击该键时,它为何不起作用.
>此问题是第一次单击引起的,一旦我关闭另一个窗口并再次单击登录按钮,Safari中的一切也将正常运行.
解决方法:
使用button标签代替输入标签.
另外,在CSS中添加以下行:
button {-webkit-appearance: none;}
或者继续使用输入标签并在下面添加行:
input {-webkit-appearance: none;}
它应该工作正常.
内容总结
以上是互联网集市为您收集整理的javascript-尝试使用iframe提交表单时在Safari上的奇怪行为全部内容,希望文章能够帮你解决javascript-尝试使用iframe提交表单时在Safari上的奇怪行为所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。