firefox浏览器相关的2个坑

今天遇到一个bug,找回密码的功能在google浏览器正常,在firefox浏览器不正常。在排查该bug的过程中遇到2个坑。先总结一下:

1、firefox浏览器无法debug,“脚本”面板提示:本页面不包含 Javascript 如果 <script> 标签有 "type" 属性, 其值应为 "text/javascript" 或者 "application/javascript". 另外脚本必须可解析(语法上正确)。

2、jquery动态form在firefox不能提交。

接下来详细说明。

一、firefox无法debug

场景如下:前提是页面中有js文件,但是firefox“脚本”面板却提示:本页面不包含 Javascript 如果 <script> 标签有 "type" 属性, 其值应为 "text/javascript" 或者 "application/javascript". 另外脚本必须可解析(语法上正确)。

导致无法打断点debug,但是我又必须在firefox浏览器中排错,所以就上网查啊。

有一些坑爹的答案比如:遇到这种情况,一般重置firebug,然后开启“脚本“功能,刷新页面,就能显示正常。试了之后根本不管用。

在火狐社区里看到一句话:50上firebug有兼容问题,等待作者更新或先安装49版本。

firefox浏览器相关的2个坑

这才是问题的原因,所以果断卸载了最新的51的firefox,下载了49的firefox终于可以正常debug了。

firefox浏览器相关的2个坑

二、jquery动态form在firefox不能提交。

jquery动态form在firefox不能提交,即form.submit()火狐浏览器提交失败。debug的过程中发现form.submit()提交后在google浏览器里有向服务器发送请求,但是在firefox中却没有。太奇怪了,查了资料发现。

这是Firefox的一种安全策略,在火狐浏览器中只有当页面中存在form时,submit();方法才会被激活。

原来代码如下:

  var standardPost = function(url, args) {
var form = $("<form method='post'></form>");
form.attr({
"action": url
});
for (arg in args) {
var input = $("<input type='hidden'>");
input.attr({
"name": arg
});
input.val(args[arg]);
form.append(input);
}
form.submit();
}

修改后:

在html中加入一个隐藏的div。

<div id="batchDiv" style="display:none"></div>

form表单追加到这个隐藏的div中。

 var standardPost = function(url, args) {
var form = $("<form id='smbForm' method='post'></form>");
form.attr({
"action": url
});
for (arg in args) {
var input = $("<input type='hidden'>");
input.attr({
"name": arg
});
input.val(args[arg]);
form.append(input);
}
$("#batchDiv").empty().append(form);//添加到隐藏div中
//form.submit();
$('#smbForm'
).submit(); }

本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:http://www.cnblogs.com/starof/p/4904929.html有问题欢迎与我讨论,共同进步。

上一篇:基于webpack的Vue.js开发环境快速搭建


下一篇:在Winform界面使用自定义用户控件及TabelPanel和StackPanel布局控件