兼容性問題總結(jié)

兼容性問題:

一橘茉、CSS兼容性

1.felx布局在iOS8上有問題工腋。解決:加-webkit前綴

2.ie6、7和遨游里這個(gè)標(biāo)簽的高度不受控制畅卓,超出自己設(shè)置的高度 擅腰。解決:給超出高度的標(biāo)簽設(shè)置overflow:hidden;或者設(shè)置行高line-height 小于你設(shè)置的高度。

3.幾個(gè)img標(biāo)簽放在一起的時(shí)候翁潘,有些瀏覽器會(huì)有默認(rèn)的間距趁冈,加了問題一中提到的通配符也不起作用。解決:使用float屬性為img布局

4.透明度的兼容css設(shè)置:ie6認(rèn)識(shí)的hacker 是下劃線_ 和星號(hào) *? ie7 遨游認(rèn)識(shí)的hacker是星號(hào)?*

5.不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)丁和內(nèi)補(bǔ)丁不同拜马,即隨便寫幾個(gè)標(biāo)簽渗勘,不加樣式控制的情況下,各自的margin 和padding差異較大俩莽。 解決:?*{margin:0;padding:0;}

6.塊屬性標(biāo)簽float后旺坠,又有橫行的margin情況下,在IE6顯示margin比設(shè)置大扮超。解決:在float的標(biāo)簽樣式控制中加入 display:inline;將其轉(zhuǎn)化為行內(nèi)屬性

7.行內(nèi)屬性標(biāo)簽取刃,設(shè)置display:block后采用float布局,又有橫行的margin的情況出刷,IE6間距bug璧疗。解決:在display:block;后面加入display:inline;display:table;

8.標(biāo)簽最低高度設(shè)置min-height不兼。解決:如果我們要設(shè)置一個(gè)標(biāo)簽的最小高度200px馁龟,需要進(jìn)行的設(shè)置為:{min-height:200px; height:auto !important; height:200px; overflow:visible;}

9.谷歌瀏覽器不支持字體小于12px崩侠。解決:可以使用css3屬性對(duì)文字進(jìn)行縮放處理,使用transform:scale()屁柏。

10.IE6,IE7不能隱藏(overflow:hidden)絕對(duì)定位溢出的內(nèi)容啦膜;解決:哪個(gè)需要設(shè)置overflow;hidden淌喻,生效僧家,就在哪個(gè)父級(jí)上面設(shè)置position:relative;

11.谷歌、ie瀏覽器默認(rèn)空格( )寬度不一的問題裸删。解決:設(shè)置相同字體 font-family:"宋體";

12.<div class="clear"></div>在ie6中存在默認(rèn)空白問題八拱;解決:.clear{font-size:0;line-height:0;height:0;}

13.塊級(jí)元素上加懸停在ie6上不顯示;

解決:

body{? behavior:url(csshover.htc);}

<!--[if lte IE 6]>? <![endif]-->?

IE6及其以下版本可見?

<!--[if lte IE 7]>? <![endif]-->?

IE7及其以下版本可見?

<!--[if IE 6]>????? <![endif]-->?

只有IE6版本可見?

<![if !IE]>???????? <![endif]>?

除了IE以外的版本?

<!--[if lt IE 8]>?? <![endif]-->?

IE8及其以下的版本可見?

<!--[if gte IE 7]>? <![endif]-->?

IE7及其以下的版本可見

14.png-24格式的背景圖片在ie6中顯示灰色涯塔;解決:

< !--[if IE 6]>

<script src="DD_belatedPNG.js"></script><script> DD_belatedPNG.fix('.png_bg');</script>

<![endif]-->

15.圓形頭像的制作兼容

圓形頭像的制作原理就是在頭像上覆蓋一張透明的圖片肌稻,把四個(gè)角顏色設(shè)置成頁(yè)面的背景顏色,中間透明匕荸。

這里需要注意的是需要把圖片保存成24位的png爹谭,雖然IE6支持8位的png的透明,但是8位的png做透明圓弧圖片存在效果上的問題榛搔,就是存在白色的雜邊或鋸齒诺凡。24位的png或32位的png的圓弧透明(半透明)圖片則非常光滑,但是該死的IE6不支持24位的png或32位的png透明(其他瀏覽器都支持)践惑,需要我們額外的一下處理腹泌;使用 AlphaImageLoader就可以解決IE6不能顯示24位和32位PNG的透明,

但使用 AlphaImageLoader 篩選器的元素必須有寬高尔觉,width:XXpx; height:XXpx;ie6下必須充值背景為none凉袱,_background:none

<style>

#test{position:relative; top:0; left:0;width:300px;height:300px;background:#000;}

#test span{position:absolute; top:0; left:0;width:200px;height:200px;background:url("路徑/中間透明的圖片.png");color:#fff;_background:none;_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="路徑/中間透明的圖片.png",sizingMethod="crop"); display:block;}

</style>

<div id="test"><img src="圖片地址" width="200" height="200" /><span></span></div>

16.使三列、兩列div背景等高

補(bǔ)差等高法

<div class="content">

<div class="left"></div>

<div class="right"></div>

</div>

.content{overflow:hidden;}

.left, .right{margin-bottom:-10000px;padding-bottom:10000px;}

這也是負(fù)margin的一個(gè)應(yīng)用侦铜。這種方法是有一個(gè)缺點(diǎn)专甩,就是當(dāng)其中有出現(xiàn)錨點(diǎn)的時(shí)候,會(huì)出現(xiàn)錨點(diǎn)跳轉(zhuǎn)錯(cuò)位的問題钉稍。

可能有的公司也會(huì)不讓使用這個(gè)方法配深,因?yàn)閙argin、padding數(shù)值過大嫁盲;

還有種折中的方法是使用背景圖片達(dá)到頁(yè)面基本的等高篓叶,這個(gè)大家應(yīng)該懂得吧。

17.谷歌瀏覽器css hack解決(只有谷歌羞秤、蘋果瀏覽器識(shí)別)

??? @media screen and (-webkit-min-device-pixel-ratio:0) {??

???? /*這里放新建的CSS選擇器*/?

???? }?

二缸托、JS兼容性

1. children與childNodes

IE提供的children、childNodes和firefox下的childNodes的行為是有區(qū)別的瘾蛋,firefox下childNodes會(huì)把換行和空白字符都算作父節(jié)點(diǎn)的子節(jié)點(diǎn)俐镐,而IE的childNodes和children不會(huì)。比如:

<div id="dd">

<div>yizhu2000</div>

</div>

d為dd的div在IE下用childNodes查看哺哼,其子節(jié)點(diǎn)數(shù)為1佩抹,而ff下為三叼风,我們可以從firefox的dom查看器里面看到他的childNodes為["\n ", div, "\n"]。

要在firefox下模擬children的屬性我們可以這樣做:

if (typeof(HTMLElement) != "undefined" && !window.opera) {

HTMLElement.prototype.__defineGetter__("children", function() {

for (var a = [], j = 0, n, i = 0; i < this.childNodes.length; i++) {

n = this.childNodes[i];

if (n.nodeType == 1) {

a[j++] = n;

if (n.name) {

if (!a[n.name])

a[n.name] = [];

a[n.name][a[n.name].length] = n;

}

if (n.id)

a[n.id] = n;

}

}

return a;

});

}

2. firefox和ie的事件

window.event只能在IE下使用棍苹,而不能用在Firefox下无宿,這是因?yàn)镕irefox的event只能在事件發(fā)生的現(xiàn)場(chǎng)使用。 Firefox必須從源處加入event作參數(shù)傳遞枢里。IE忽略該參數(shù)孽鸡,用window.event來(lái)讀取該event。

比方說(shuō)下面這個(gè)在ie下獲得鼠標(biāo)位置的方法:

<button onclick="onClick()" >獲得鼠標(biāo)點(diǎn)擊橫坐標(biāo)</button>

<script type="text/javascript">

function onclick(){

alert(event.clientX);

}

</script>

需要改成

<button onclick="onClick(event)">獲得OuterHTML</button>

<script type="text/javascript">

function onclick(event){

event = event || window.event;

alert(event.clientX);

}

</script>

var eventObj=ev||event

才能在兩種瀏覽器下使用

3.HTML對(duì)象獲取問題

FireFox獲取方式document.getElementById("idName")

ie使用document.idname或者document.getElementById("idName")

解決辦法:統(tǒng)一使用document.getElementById("idName");

4. const問題

在Firefox下栏豺,可以使用const關(guān)鍵字或var關(guān)鍵字來(lái)定義常量彬碱;

IE下,只能使用var關(guān)鍵字來(lái)定義常量奥洼;

解決方法:統(tǒng)一使用var關(guān)鍵字來(lái)定義常量巷疼。

5.frame問題

以下面的frame為例:

1<frame src="xxx.html" id="frameId" name="frameName" />

a)訪問frame對(duì)象

IE:使用window.frameId或者window.frameName來(lái)訪問這個(gè)frame對(duì)象,frameId和frameName可以同名灵奖;

Firefox:只能使用window.frameName來(lái)訪問這個(gè)frame對(duì)象皮迟;

另外,在IE和Firefox中都可以使用window.document.getElementById("frameId")來(lái)訪問這個(gè)frame對(duì)象桑寨;

b) 切換frame內(nèi)容

在 IE和Firefox中都可以使用

window.document.getElementById("testFrame").src = "xxx.html"或window.frameName.location = "xxx.html"

來(lái)切換frame的內(nèi)容伏尼;

如果需要將frame中的參數(shù)傳回父窗口(注意不是opener,而是parent)尉尾,可以在frame中使用parent來(lái)訪問父窗口爆阶。例如:

parent.document.form1.filename.value="Aqing";

6. body問題

Firefox的body在body標(biāo)簽沒有被瀏覽器完全讀入之前就存在;而IE的body則必須在body標(biāo)簽被瀏覽器完全讀入之后才存在沙咏;

7. firefox與IE的父元素(parentElement)的區(qū)別

IE:obj.parentElement

firefox:obj.parentNode

解決方法:因?yàn)閒irefox與IE都支持DOM辨图,因此全部使用obj.parentNode

8.innerText的問題

innerText在IE中能正常工作,但是innerText在FireFox中卻不行肢藐,需用textContent故河;

解決方法:innerHTML

if (navigator.appName.indexOf("Explorer") > -1) {

document.getElementById('element').innerText = "my text";

} else {

document.getElementById('element').textContent = "my text";

}

9.AJAX獲取XMLHTTP的區(qū)別

var xmlhttp;

if (window.XMLHttpRequest) {

xmlhttp = new XMLHttpRequest();

} elseif (window.ActiveXObject) { // IE的獲取方式

xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

}

注意:在IE中,xmlhttp.send(content)方法的content可以為空吆豹,而firefox則不能為null鱼的,應(yīng)該用send(""),否則會(huì)出現(xiàn)411錯(cuò)誤痘煤。

var xhr=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP)

10. event.x與event.y問題

? (1)現(xiàn)有問題:在IE中凑阶,event對(duì)象有x,y 屬性,F(xiàn)irefox中沒有衷快。

? (2)解決方法:在Firefox中宙橱,與event.x 等效的是 event.pageX。可以使用:

? ? ? mX = event.x ? event.x : event.pageX;

GIT問題總結(jié)

1.CVS及SVN都是集中式的版本控制系統(tǒng)师郑,而Git是分布式版本控制系統(tǒng)

2.分布式版本控制系統(tǒng)與集中式版本控制系統(tǒng)有何不同:集中式版本控制系統(tǒng)环葵,版本庫(kù)是集中存放在中央服務(wù)器的,而干活的時(shí)候宝冕,用的都是自己的電腦张遭,所以要先從中央服務(wù)器取得最新的版本,然后開始干活猬仁,干完活了,再把自己的活推送給中央服務(wù)器先誉。集中式版本控制系統(tǒng)最大的毛病就是必須聯(lián)網(wǎng)才能工作湿刽,如果在局域網(wǎng)內(nèi)還好,帶寬夠大褐耳,速度夠快诈闺,可如果在互聯(lián)網(wǎng)上,遇到網(wǎng)速慢的話铃芦,可能提交一個(gè)10M的文件就需要5分鐘雅镊。

分布式版本控制系統(tǒng)根本沒有“中央服務(wù)器”,每個(gè)人的電腦上都是一個(gè)完整的版本庫(kù)刃滓,這樣仁烹,你工作的時(shí)候,就不需要聯(lián)網(wǎng)了咧虎,因?yàn)榘姹編?kù)就在你自己的電腦上卓缰。分布式版本控制系統(tǒng)的安全性要高很多,因?yàn)槊總€(gè)人電腦里都有完整的版本庫(kù)砰诵,某一個(gè)人的電腦壞掉了不要緊征唬,隨便從其他人那里復(fù)制一個(gè)就可以了。而集中式版本控制系統(tǒng)的中央服務(wù)器要是出了問題茁彭,所有人都沒法干活了总寒。分布式版本控制系統(tǒng)通常也有一臺(tái)充當(dāng)“中央服務(wù)器”的電腦,但這個(gè)服務(wù)器的作用僅僅是用來(lái)方便“交換”大家的修改

3.安裝

(1)下載安裝

(2)$ git config --global user.name "Your Name"? $ git config --global user.email "email@example.com"

(3)通過git init命令把這個(gè)目錄變成Git可以管理的倉(cāng)庫(kù) 發(fā)現(xiàn)當(dāng)前目錄下多了一個(gè).git的目錄理肺,這個(gè)目錄是Git來(lái)跟蹤管理版本庫(kù)的 如果你沒有看到.git目錄摄闸,那是因?yàn)檫@個(gè)目錄默認(rèn)是隱藏的,用ls -ah命令就可以看見

(4)添加文件到Git倉(cāng)庫(kù)妹萨,分兩步:

第一步贪薪,使用命令git add <file>,注意眠副,可反復(fù)多次使用画切,添加多個(gè)文件;

第二步囱怕,使用命令git commit霍弹,完成毫别。

git status命令可以讓我們時(shí)刻掌握倉(cāng)庫(kù)當(dāng)前的狀態(tài)

git diff顧名思義就是查看difference,顯示的格式正是Unix通用的diff格式

git log命令顯示從最近到最遠(yuǎn)的提交日志典格,我們可以看到3次提交,有時(shí)間戳? 如果嫌輸出信息太多岛宦,看得眼花繚亂的,可以試試加上--pretty=oneline參數(shù)? 你看到的一大串類似3628164...882e1e0的是commit id(版本號(hào))

版本回退

git? reset? 版本回滾? --hard? Git的版本回退速度非乘=桑快砾肺,因?yàn)镚it在內(nèi)部有個(gè)指向當(dāng)前版本的HEAD指針,當(dāng)你回退版本的時(shí)候防嗡,Git僅僅是把HEAD從指向append GPL改為指向add distributed 然后順便把工作區(qū)的文件更新了

git reflog用來(lái)記錄你的每一次命令

工作區(qū)和暫存區(qū)

Git和其他版本控制系統(tǒng)如SVN的一個(gè)不同之處就是有暫存區(qū)的概念

工作區(qū)有一個(gè)隱藏目錄.git变汪,這個(gè)不算工作區(qū),而是Git的版本庫(kù)

Git的版本庫(kù)里存了很多東西蚁趁,其中最重要的就是稱為stage(或者叫index)的暫存區(qū)裙盾,還有Git為我們自動(dòng)創(chuàng)建的第一個(gè)分支master,以及指向master的一個(gè)指針叫HEAD他嫡。

git diff HEAD -- readme.txt命令可以查看工作區(qū)和版本庫(kù)里面最新版本的區(qū)別

管理修改

git checkout -- file可以丟棄工作區(qū)的修改

命令git checkout -- readme.txt意思就是番官,把readme.txt文件在工作區(qū)的修改全部撤銷,這里有兩種情況:

一種是readme.txt自修改后還沒有被放到暫存區(qū)钢属,現(xiàn)在徘熔,撤銷修改就回到和版本庫(kù)一模一樣的狀態(tài);

一種是readme.txt已經(jīng)添加到暫存區(qū)后淆党,又作了修改近顷,現(xiàn)在,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)宁否。

總之窒升,就是讓這個(gè)文件回到最近一次git commit或git add時(shí)的狀態(tài)。

撤銷修改

git reset HEAD file可以把暫存區(qū)的修改撤銷掉(unstage)慕匠,重新放回工作區(qū)

git checkout其實(shí)是用版本庫(kù)里的版本替換工作區(qū)的版本饱须,無(wú)論工作區(qū)是修改還是刪除,都可以“一鍵還原”台谊。

刪除文件

命令git rm用于刪除一個(gè)文件蓉媳。如果一個(gè)文件已經(jīng)被提交到版本庫(kù),那么你永遠(yuǎn)不用擔(dān)心誤刪锅铅,但是要小心酪呻,你只能恢復(fù)文件到最新版本,你會(huì)丟失最近一次提交后你修改的內(nèi)容盐须。

添加遠(yuǎn)程庫(kù)

要關(guān)聯(lián)一個(gè)遠(yuǎn)程庫(kù)玩荠,使用命令git remote add origin git@server-name:path/repo-name.git;

關(guān)聯(lián)后,使用命令git push -u origin master第一次推送master分支的所有內(nèi)容阶冈;

此后闷尿,每次本地提交后,只要有必要女坑,就可以使用命令git push origin master推送最新修改填具;

分布式版本系統(tǒng)的最大好處之一是在本地工作完全不需要考慮遠(yuǎn)程庫(kù)的存在,也就是有沒有聯(lián)網(wǎng)都可以正常工作匆骗,而SVN在沒有聯(lián)網(wǎng)的時(shí)候是拒絕干活的劳景!當(dāng)有網(wǎng)絡(luò)的時(shí)候,再把本地提交推送一下就完成了同步碉就,真是太方便了盟广!

從遠(yuǎn)程庫(kù)克隆

要克隆一個(gè)倉(cāng)庫(kù),首先必須知道倉(cāng)庫(kù)的地址铝噩,然后使用git clone命令克隆衡蚂。

Git支持多種協(xié)議窿克,包括https骏庸,但通過ssh支持的原生git協(xié)議速度最快

創(chuàng)建與合并分支

查看分支:git branch

創(chuàng)建分支:git branch <name>

切換分支:git checkout <name>

創(chuàng)建+切換分支:git checkout -b <name>

合并某分支到當(dāng)前分支:git merge <name>

刪除分支:git branch -d <name>

解決沖突

當(dāng)Git無(wú)法自動(dòng)合并分支時(shí),就必須首先解決沖突年叮。解決沖突后具被,再提交,合并完成只损。

用git log --graph命令可以看到分支合并圖一姿。

分支管理策略

Git分支十分強(qiáng)大,在團(tuán)隊(duì)開發(fā)中應(yīng)該充分應(yīng)用跃惫。

合并分支時(shí)叮叹,加上--no-ff參數(shù)就可以用普通模式合并,合并后的歷史有分支爆存,能看出來(lái)曾經(jīng)做過合并蛉顽,而fast forward合并就看不出來(lái)曾經(jīng)做過合并。

Bug分支

當(dāng)手頭工作沒有完成時(shí)先较,先把工作現(xiàn)場(chǎng)git stash一下携冤,然后去修復(fù)bug,修復(fù)后闲勺,再git stash pop曾棕,回到工作現(xiàn)場(chǎng)。

需要恢復(fù)菜循,有兩個(gè)辦法:

一是用git stash apply恢復(fù)翘地,但是恢復(fù)后,stash內(nèi)容并不刪除,你需要用git stash drop來(lái)刪除子眶;

另一種方式是用git stash pop瀑凝,恢復(fù)的同時(shí)把stash內(nèi)容也刪了:

Feature分支

開發(fā)一個(gè)新feature,最好新建一個(gè)分支臭杰;

如果要丟棄一個(gè)沒有被合并過的分支粤咪,可以通過git branch -D <name>強(qiáng)行刪除。

多人協(xié)作

要查看遠(yuǎn)程庫(kù)的信息渴杆,用git remote? 用git remote -v顯示更詳細(xì)的信息

在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支寥枝,使用git checkout -b branch-name origin/branch-name,本地和遠(yuǎn)程分支的名稱最好一致

多人協(xié)作的工作模式通常是這樣:

1.首先磁奖,可以試圖用git push origin branch-name推送自己的修改囊拜;

2.如果推送失敗,則因?yàn)檫h(yuǎn)程分支比你的本地更新比搭,需要先用git pull試圖合并冠跷;

3.如果合并有沖突,則解決沖突身诺,并在本地提交蜜托;

4.沒有沖突或者解決掉沖突后,再用git push origin branch-name推送就能成功霉赡!

如果git pull提示“no tracking information”橄务,則說(shuō)明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒有創(chuàng)建,用命令git branch --set-upstream branch-name origin/branch-name穴亏。

創(chuàng)建標(biāo)簽

命令git tag <name>用于新建一個(gè)標(biāo)簽蜂挪,默認(rèn)為HEAD,也可以指定一個(gè)commit id嗓化;

git tag -a <tagname> -m "blablabla..."可以指定標(biāo)簽信息棠涮;

git tag -s <tagname> -m "blablabla..."可以用PGP簽名標(biāo)簽;? 簽名采用PGP簽名刺覆,因此严肪,必須首先安裝gpg(GnuPG),如果沒有找到gpg隅津,或者沒有g(shù)pg密鑰對(duì)诬垂,就會(huì)報(bào)錯(cuò)

用命令git show <tagname>可以看到說(shuō)明文字

命令git tag可以查看所有標(biāo)簽。

操作標(biāo)簽

命令git push origin <tagname>可以推送一個(gè)本地標(biāo)簽伦仍;

命令git push origin --tags可以推送全部未推送過的本地標(biāo)簽结窘;

命令git tag -d <tagname>可以刪除一個(gè)本地標(biāo)簽;

命令git push origin :refs/tags/<tagname>可以刪除一個(gè)遠(yuǎn)程標(biāo)簽充蓝。

使用GitHub

在GitHub上隧枫,可以任意Fork開源倉(cāng)庫(kù)喉磁;(git clone git@github.com:michaelliao/bootstrap.git)

自己擁有Fork后的倉(cāng)庫(kù)的讀寫權(quán)限;

可以推送pull request給官方倉(cāng)庫(kù)來(lái)貢獻(xiàn)代碼

在本地庫(kù)上使用命令git remote add把它和碼云的遠(yuǎn)程庫(kù)關(guān)聯(lián):git remote add origin/git remote add github/git remote add gitee

刪除已關(guān)聯(lián)的名為origin的遠(yuǎn)程庫(kù):git remote rm origin

用git remote -v查看遠(yuǎn)程庫(kù)信息

忽略特殊文件

忽略某些文件時(shí)官脓,需要編寫.gitignore协怒;

.gitignore文件本身要放到版本庫(kù)里,并且可以對(duì).gitignore做版本管理

.gitignore寫得有問題卑笨,需要找出來(lái)到底哪個(gè)規(guī)則寫錯(cuò)了孕暇,可以用git check-ignore命令檢查

配置別名

用st表示status:git config --global alias.st status? 加上--global是針對(duì)當(dāng)前用戶起作用的,如果不加赤兴,那只針對(duì)當(dāng)前的倉(cāng)庫(kù)起作用

搭建Git服務(wù)器

搭建Git服務(wù)器非常簡(jiǎn)單妖滔,通常10分鐘即可完成力细;

要方便管理公鑰水慨,用Gitosis狞甚;

要像SVN那樣變態(tài)地控制權(quán)限审姓,用Gitolite

第一步素跺,安裝git

第二步顷霹,創(chuàng)建一個(gè)git用戶熊赖,用來(lái)運(yùn)行g(shù)it服務(wù)

第三步疲牵,創(chuàng)建證書登錄

第四步承二,初始化Git倉(cāng)庫(kù)

第五步,禁用shell登錄

第六步瑰步,克隆遠(yuǎn)程倉(cāng)庫(kù)

管理公鑰

如果團(tuán)隊(duì)很小矢洲,把每個(gè)人的公鑰收集起來(lái)放到服務(wù)器的/home/git/.ssh/authorized_keys文件里就是可行的璧眠。如果團(tuán)隊(duì)有幾百號(hào)人缩焦,就沒法這么玩了,這時(shí)责静,可以用Gitosis來(lái)管理公鑰袁滥。

管理權(quán)限

有很多不但視源代碼如生命,而且視員工為竊賊的公司灾螃,會(huì)在版本控制系統(tǒng)里設(shè)置一套完善的權(quán)限控制题翻,每個(gè)人是否有讀寫權(quán)限會(huì)精確到每個(gè)分支甚至每個(gè)目錄下。因?yàn)镚it是為L(zhǎng)inux源代碼托管而開發(fā)的腰鬼,所以Git也繼承了開源社區(qū)的精神嵌赠,不支持權(quán)限控制。不過熄赡,因?yàn)镚it支持鉤子(hook)姜挺,所以,可以在服務(wù)器端編寫一系列腳本來(lái)控制提交等操作彼硫,達(dá)到權(quán)限控制的目的炊豪。Gitolite就是這個(gè)工具凌箕。

閉包

閉包的作用就是在a執(zhí)行完并返回后,閉包使得Javascript的垃圾回收機(jī)制GC不會(huì)收回a所占用的資源词渤,因?yàn)閍的內(nèi)部函數(shù)b的執(zhí)行需要依賴a中的變量牵舱。使用閉包主要是為了設(shè)計(jì)私有的方法和變量,閉包的優(yōu)點(diǎn)是可以避免全局變量的污染缺點(diǎn)是閉包會(huì)常駐內(nèi)存缺虐,會(huì)增加內(nèi)存使用量芜壁,使用不當(dāng)容易造成內(nèi)存泄漏,在JS中高氮,函數(shù)即閉包沿盅,只有函數(shù)才會(huì)產(chǎn)生作用域的概念。

閉包的三個(gè)特征:1.函數(shù)嵌套函數(shù)? 2.函數(shù)內(nèi)部可以引用外部的參數(shù)和變量? 3.參數(shù)和變量不會(huì)被垃圾回收機(jī)制回收纫溃。

vue中微博的分享鏈接腰涧。可以用a標(biāo)簽的href屬性實(shí)現(xiàn)紊浩,<a href=""

target="_blank"><img src="" alt="wechat">

a標(biāo)簽實(shí)現(xiàn)打電話功能就是在href=“tel”郵件是mailto: 短信是sms

世界主流瀏覽器及內(nèi)核:IE trident firefox:gecko safari :webkit opera:presto

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末窖铡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子坊谁,更是在濱河造成了極大的恐慌费彼,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件口芍,死亡現(xiàn)場(chǎng)離奇詭異箍铲,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鬓椭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門颠猴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人小染,你說(shuō)我怎么就攤上這事翘瓮。” “怎么了裤翩?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵资盅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我踊赠,道長(zhǎng)呵扛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任筐带,我火速辦了婚禮今穿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘烫堤。我一直安慰自己荣赶,他們只是感情好凤价,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拔创,像睡著了一般利诺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上剩燥,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天慢逾,我揣著相機(jī)與錄音,去河邊找鬼灭红。 笑死侣滩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的变擒。 我是一名探鬼主播君珠,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼娇斑!你這毒婦竟也來(lái)了策添?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤毫缆,失蹤者是張志新(化名)和其女友劉穎唯竹,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苦丁,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浸颓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了旺拉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片产上。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖账阻,靈堂內(nèi)的尸體忽然破棺而出蒂秘,到底是詐尸還是另有隱情泽本,我是刑警寧澤淘太,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站规丽,受9級(jí)特大地震影響蒲牧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赌莺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一冰抢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧艘狭,春花似錦挎扰、人聲如沸翠订。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)尽超。三九已至,卻和暖如春梧躺,著一層夾襖步出監(jiān)牢的瞬間似谁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工掠哥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留巩踏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓续搀,卻偏偏與公主長(zhǎng)得像塞琼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子禁舷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容