今天遇到一個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版本。
這才是問題的原因,所以果斷卸載了最新的51的firefox,下載了49的firefox終於可以正常debug了。
二、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有問題歡迎與我討論,共同進步。