瀏覽器兼容正常來講的其實都是對IE6-IE8的兼容,下面IE瀏覽器沒有特殊說明均是指IE6-IE8.html
//hack
if (!$.support.leadingWhitespace) {// IE 6-IE8 ? $('input:checkbox').click(function () { this.blur(); this.focus(); }); };
//另外順便附上一個利用html特想檢測當前ie版本的函數
var isIE = function(ver){
var b = document.createElement('b')
b.innerHTML = '<!--[if IE ' + ver + ']><i></i><![endif]-->'
return b.getElementsByTagName('i').length === 1
}
setTimeout(function(){console.log(1);}, 0); console.log(2);
以上代碼輸出的結果順序爲二、1;web
setTimeout(fn,0)的意思是儘量早地執行,立刻把回調函數加到任務列表而已。ajax
function add(a, b) { var c, d, e; try { c = a.toString().split(".")[1].length; } catch (f) { c = 0; } try { d = b.toString().split(".")[1].length; } catch (f) { d = 0; } return e = Math.pow(10, Math.max(c, d)), (mul(a, e) + mul(b, e)) / e; } function sub(a, b) { var c, d, e; try { c = a.toString().split(".")[1].length; } catch (f) { c = 0; } try { d = b.toString().split(".")[1].length; } catch (f) { d = 0; } return e = Math.pow(10, Math.max(c, d)), (mul(a, e) - mul(b, e)) / e; } function mul(a, b) { var c = 0, d = a.toString(), e = b.toString(); try { c += d.split(".")[1].length; } catch (f) {} try { c += e.split(".")[1].length; } catch (f) {} return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c); } function div(a, b) { var c, d, e = 0, f = 0; try { e = a.toString().split(".")[1].length; } catch (g) {} try { f = b.toString().split(".")[1].length; } catch (g) {} return c = Number(a.toString().replace(".", "")), d = Number(b.toString().replace(".", "")), mul(c / d, Math.pow(10, f - e)); }
注意jsonp請求的返回值要用jsonp的函數名特別包裝才能夠,取到的數據會報錯————SyntaxError: missing ; before statement,在下面的方法中jsonp的函數名是--jsonpcallbackchrome
jsonp 在現代瀏覽器中,若是趕上網絡不通等狀況,會靜靜地失敗,也就是連error也不進去,而IE則可以跑進去,因此爲了瀏覽器統一,最好就不要寫error回調json
/** * ajax_jsonP * @param url string 地址 * @param url obj or post string 數據 * @param callback function 回調 * @param errorback function 錯誤回調 * */ var ajaxJsonp = function (url, params, callback, errorback) { layer.load(); $.ajax({ type : "get", url : url, data:params, dataType : "jsonp", jsonp: "jsonpcallback", success : function(thisData){ if (thisData.retCode == "SUCCESS") { if (callback != undefined) { callback(thisData); } }else {if (errorback != undefined) { errorback(thisData); } } }, }); };
瀏覽器會給第一個密碼框type=password 以及它的前一個文本框填充帳號進行填充,利用這個特性,咱們能夠在表單的最前面加一個隱藏的密碼框瀏覽器
.clear-pwd {position: absolute;left: -9999px;visibility: hidden;} .clear-pwd2 {display: none;}//經測試,在Ubuntu下面的瀏覽器是無效的,因此建議用上面的樣式 <form> <input class="clear-pwd" name="fix" type="password"> <input type="text"/> <input type=password autocomplete="false"> </form>
這個時候能夠用var num2 = new Number(num);或者 parseFloat(num).toString();
這個時候咱們能夠先添加focus事件到setTimeout()的任務隊列上面;網絡
$input.blur(function(){ ……………… setTimeout(function(){$input.focus()},0); }
var _isMobile = 'createTouch' in document && !('onmousemove' in document) || /(iPhone|iPad|iPod)/i.test(navigator.userAgent);
http-equiv="X-UA-Compatible"這個是IE8的專用標記,是用來指定Internet Explorer 8 瀏覽器模擬某個特定版本IE瀏覽器的渲染方式,以此來解決IE瀏覽器的兼容問題。函數
<meta name="renderer" content="webkit"><%--360 優先使用極速模式--%>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
數值比較大小 通常咱們200>1000 //false 這個是沒有異議的
但不少狀況下咱們是"200">"1000" //true,建議要數值比較大小,用運算符 + -, "200"-"1000">0 //false
黃色背景的緣由是chrome會給瀏覽器加上私有屬性:input:-webkit-autofillpost
input:-webkit-autofill { background-color: #FAFFBD; background-image: none; color: #000; }
解決方案:測試