動態獲取div高度
window.onresize(){...}
<!--同一頁面寫多個會覆蓋-->
複製程式碼
$(window).resize(function(){...}
<!--多個都可以執行-->
複製程式碼
禁止橫屏
$(function(){
//判斷手機橫豎屏狀態:
function hengshuping(){
// if(window.orientation==180||window.orientation==0){
// alert("豎屏狀態!")
// }
if(window.orientation==90||window.orientation==-90){
alert("為了您的體驗更好,請切換豎屏展示")
}
}
window.addEventListener("onorientationchange" in window ? "orientationchange" : "resize", hengshuping, false);
})
複製程式碼
calc()相容問題
calc() = calc(四則運算)
width: calc(100% - 10px)
width:-moz-calc(100% - 10px);
width:-webkit-calc(100% - 10px);
<!--
firefox 4.0+已經開支支援calc()功能,需要使用-moz-calc()私有屬性;
chrome從19 dev版,開始支援私有的-webkit-calc()寫法;
IE9支援原生寫法,calc();
Opera貌似還不支援~~
-->
複製程式碼
獲取瀏覽器的可視高度
<!--1.對於IE9+、chrome、firefox、Opera、Safari
window.innerHeight
<!--瀏覽器視窗的內部高度;-->
window.innerWidth
<!--瀏覽器視窗的內部寬度;-->
var w = document.documentElement.clientWidth || document.body.clientWidth;
var h = document.documentElement.clientHeight || document.body.clientHeight;
<!--相容性寫法-->
複製程式碼
點選穿透
方法1:event.stopPropagation()
該方法將停止事件的傳播,阻止它被分派到其他 Document 節點。在事件傳播的任何階段都可以呼叫它。注意,雖然該方法不能阻止同一個 Document 節點上的其他事件控制程式碼被呼叫,但是它可以阻止把事件分派到其他節點。
<div class="mask">
<div class="img">
<div class="btn-close">
</div>
</div>
</div>
var mask = document.getElementsByClassName('mask')[0];
var img = document.getElementsByClassName('img')[0];
var btn = document.getElementsByClassName('btn-close')[0];
console.log(mask);
mask.onclick = function(){
console.log(1111)
event.stopPropagation()
};
img.onclick = function(){
console.log(222)
event.stopPropagation()
};
btn.onclick = function(){
console.log(3333)
event.stopPropagation()
};
複製程式碼
判斷當前環境在ios還是安卓
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
<!--ios-->
} else if (/(Android)/i.test(navigator.userAgent)) {
<!--安卓-->
} else {
this.isIos = true
}
複製程式碼
記憶體洩漏
幾種常見的記憶體洩漏
1.全域性變數
<!--直接建立-->
a = "aaa"
<!--由this建立-->
function foo(){
this.a = 'aaa'
}
//直接呼叫自身,this指向全域性變數
foo();
複製程式碼
2.沒有及時清理計時器或者回撥函式
<!--setInterval-->
function b() {
var a = setInterval(function() {
console.log("Hello");
clearInterval(a);
b();
}, 50);
}
複製程式碼
<!--setInterval-->
function init()
{
window.ref = window.setInterval(function() { draw(); }, 50);
}
function draw(){
console.log('Hello');
clearInterval(window.ref);
init();
}
init();
複製程式碼
<!--setTimeout-->
function time(f, time) {
return function walk() {
clearTimeout(aeta);
var aeta =setTimeout(function () {
f();
walk();
}, time);
};
}
time(updateFormat, 1000)();
複製程式碼
3.脫離dom的引用(刪除所有引用)
var elements = {
button: document.getElementById('button'),
}
function doStuff() {
button.click();
}
function removeButton() {
// 按鈕是 body 的後代元素
document.body.removeChild(document.getElementById('button'));
// 此時,仍舊存在一個全域性的 #button 的引用
// elements 字典。button 元素仍舊在記憶體中,不能被 GC 回收。
}
複製程式碼
閉包
內容太多,詳情可以看這個,講得還不錯 blog.csdn.net/haogexiaole…
js的使用小技巧 www.haorooms.com/post/js_shi…