真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

關(guān)于javascript卡死的信息

eclipse中jsp,js文件編輯時(shí)卡死怎么辦

Eclipse中jsp、js文件編輯時(shí),卡死現(xiàn)象解決匯總

創(chuàng)新互聯(lián)公司是專業(yè)的市中網(wǎng)站建設(shè)公司,市中接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行市中網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

使用js文件時(shí),經(jīng)常出現(xiàn)卡死現(xiàn)象逐步好轉(zhuǎn),具體那個(gè)方法起到作用,不太好講。將所有用過(guò)的方法羅列如下:

1、取消驗(yàn)證

windows–perferences–validation

把 除了manual 下面的全部點(diǎn)掉,build下只留 classpath dependency Validator

2、關(guān)閉拼寫檢查

windows–perferences–general– editors-Text Editors-spelling

3、對(duì)于MyEclipse來(lái)講,修改JSP頁(yè)面時(shí)的編輯工具

Window perferences General Editors File Associations

在File types 中選擇 *.jsp 在Associated editors 中將"MyEclipse JSP Editor"設(shè)置為默認(rèn)。

4、杜絕jar包訪問(wèn)網(wǎng)絡(luò)

當(dāng)用卡死。

這是因?yàn)榻?決方法:window--preferences--java--installed JREs,編輯使用的jre,把rt.jar和charsets.jar的javadoc location設(shè)置為空(none)即可。當(dāng)然也可以去下載javadoc到本機(jī),進(jìn)行相關(guān)設(shè)置也可以解決。

另外:把自己項(xiàng)目中所有用到的jar包,都作同樣處理。

5、修改打開(kāi)鏈接的快捷鍵

最近在MyEclipse中編輯代碼時(shí),使用快捷鍵進(jìn)行復(fù)制粘貼,經(jīng)常會(huì)導(dǎo)致編輯器短暫的停頓,光標(biāo)不跟隨,居然反應(yīng)不過(guò)來(lái),幾近假死。

想來(lái)想去應(yīng)該是編輯上的什么配置或者是IDE的什么功能導(dǎo)致,于是進(jìn)入Preferences查找edit功能,進(jìn)行一個(gè)個(gè)的測(cè)試,最后發(fā)現(xiàn)原來(lái)是代碼的超鏈功能導(dǎo)致。

進(jìn)入方法:Window - Preferences - General - Editors - Text Editors - Hyperlinking

把超鏈的快捷鍵改為其他鍵比如Alt(不能改為shift)

說(shuō)明:在這個(gè)功能確實(shí)非常好用,但是由于復(fù)制粘貼的功能快捷鍵也是Ctrl,以致我在快速進(jìn)行操作的時(shí)候,原網(wǎng)頁(yè)地址:

6、修改項(xiàng)目的.project文件

js編輯器非常慢,尤其在拷貝粘貼代碼時(shí)的解決方法

使用的是官網(wǎng)標(biāo)準(zhǔn)版的JS時(shí)JS再也不似蝸牛了.

buildSpec

buildCommand

nameorg.eclipse.ui.externaltools.ExternalToolBuilder/name

triggersfull,incremental,/triggers

arguments

dictionary

keyLaunchConfigHandle/key

valueproject/.externalToolBuilders/org.eclipse.wst.jsdt.core.javascriptValidator.launch/value

/dictionary

/arguments

/buildCommand

buildCommand

nameorg.eclipse.jdt.core.javabuilder/name

arguments

/arguments

/buildCommand

buildCommand

nameorg.eclipse.wst.common.project.facet.core.builder/name

arguments

/arguments

/buildCommand

buildCommand

nameorg.eclipse.ui.externaltools.ExternalToolBuilder/name

triggersfull,incremental,/triggers

arguments

dictionary

keyLaunchConfigHandle/key

valueproject/.externalToolBuilders/org.eclipse.wst.validation.validationbuilder.launch/value

/dictionary

/arguments

/buildCommand

/buildSpec

natures

natureorg.eclipse.jem.workbench.JavaEMFNature/nature

natureorg.eclipse.wst.common.modulecore.ModuleCoreNature/nature

natureorg.eclipse.wst.common.project.facet.core.nature/nature

natureorg.eclipse.jdt.core.javanature/nature

natureorg.eclipse.wst.jsdt.core.jsNature/nature

/natures

原文鏈接:

7、調(diào)整在eclipse.ini文件,將其中的參數(shù)改成:

-vmargs

-Dosgi.requiredJavaVersion=1.6

-Xms512m

-Xmx512m

-XX:PermSize=256M

-XX:MaxPermSize=256M

-XX:-UseGCOverheadLimit

我用js寫了一段時(shí)間代碼,可是在瀏覽器中運(yùn)行一會(huì)就卡死了……怎么解決???

把setInterval改為setTimeout

非要用setInterval可以把原來(lái)的變?yōu)閏learInterval(timer);timer=setInterval("show()",1000);作用是:運(yùn)行一次就清理clear一次,然后再用,這樣就把循環(huán)變成只執(zhí)行一次

分析:

setTimeout (表達(dá)式,延時(shí)時(shí)間)

setInterval(表達(dá)式,交互時(shí)間)

延時(shí)時(shí)間/交互時(shí)間是以豪秒為單位的(1000ms=1s)

setTimeout 在執(zhí)行時(shí),是在載入后延遲指定時(shí)間后,去執(zhí)行一次表達(dá)式,僅執(zhí)行一次

setInterval 在執(zhí)行時(shí),它從載入后,每隔指定的時(shí)間就執(zhí)行一次表達(dá)式

你可以百度setInterval和setTimeout的區(qū)別

javascript的while循環(huán)卡死

這個(gè)是因?yàn)槟闵厦娴膚hile(1)代碼是個(gè)死循環(huán)啊,1非0,表示的結(jié)果一直是true,造成while會(huì)一直循環(huán)下去,當(dāng)然會(huì)造成程序崩潰掉

JS操作大量Dom數(shù)據(jù)時(shí),假死現(xiàn)象

1:JS中大量的DOM操作也會(huì)導(dǎo)致事件響應(yīng)緩慢甚至真正卡死瀏覽器,如在IE6下一次插入大量的HTML。而如果真的彈出了“腳本運(yùn)行時(shí)間過(guò)長(zhǎng)“的提示框則說(shuō)明你的JS腳本肯定有死循環(huán)或者進(jìn)行過(guò)深的遞歸操作了。

2:這時(shí)候需要對(duì)腳本進(jìn)行優(yōu)化,其步驟如下:

第一步,優(yōu)化循環(huán),循環(huán)體中包含太多的操作和循環(huán)的次數(shù)過(guò)多都會(huì)導(dǎo)致循環(huán)執(zhí)行時(shí)間過(guò)長(zhǎng),并直接導(dǎo)致鎖死瀏覽器。如果循環(huán)之后沒(méi)有其他操作,每次循環(huán)只處理一個(gè)數(shù)值,而且不依賴于上一次循環(huán)的結(jié)果則可以對(duì)循環(huán)進(jìn)行拆解,看下面的chunk的函數(shù):

function chunk(array, process, context){

setTimeout(function(){

var item = array.shift();

process.call(context, item);

if(array.length 0){

setTimeout(arguments.callee,100);

}),100);

}

chunk()函數(shù)的用途就是將一個(gè)數(shù)組分成小塊處理,它接受三個(gè)參數(shù):要處理的數(shù)組,處理函數(shù)以及可選的上下文環(huán)境。每次函數(shù)都會(huì)將數(shù)組中第一個(gè)對(duì)象取出交給process函數(shù)處理,如果數(shù)組中還有對(duì)象沒(méi)有被處理則啟動(dòng)下一個(gè)timer,直到數(shù)組處理完。這樣可保證腳本不會(huì)長(zhǎng)時(shí)間占用處理機(jī),使瀏覽器出一個(gè)高響應(yīng)的流暢狀態(tài)。

其實(shí)看來(lái),借助JS強(qiáng)大的閉包機(jī)制任何循環(huán)都是可拆分的,下面的版本增加了callback機(jī)制,使可再循環(huán)處理完畢之后進(jìn)行其他的操作。

function chunk(array,process,cbfun){

var i=0,len = array.length; //這里要注意在執(zhí)行過(guò)程中數(shù)組最好是不變的

setTimeout(function(){

process( array[i], i++); //循環(huán)體要做的操作

if( i len ){

setTimeout(arguments.callee,100)

}else{

cbfun() //循環(huán)結(jié)束之后要做的操作

}

}

}

第二步,優(yōu)化函數(shù),如果函數(shù)體內(nèi)有太多不相干但又要一起執(zhí)行的操作則可以進(jìn)行拆分,考慮下面的函數(shù):

function dosomething(){

dosomething1();

dosomething2();

}

dosomething1和dosomething2互不相干,執(zhí)行沒(méi)有先后次序,可用前面提到的chunk函數(shù)進(jìn)行拆分:

function dosomething(){

chunk([dosomething1,dosomething2],function(item){item();})

}

或者直接交給瀏覽器去調(diào)度

function dosome(){

setTimeout(dosomething1,0);

setTimeout(dosomething2,0);

}

第三步,優(yōu)化遞歸操作,函數(shù)遞歸雖然簡(jiǎn)單直接但是過(guò)深的遞歸操作不但影響性能而且稍不注意就會(huì)導(dǎo)致瀏覽器彈出腳本失控對(duì)話框,必須小心處理。

看以下斐波那契數(shù)列的遞歸算法:

function fibonacci(n){

return n 2? n: fibonacci(n -1)+ fibonacci(n -2);

};

fibonacci(40)這條語(yǔ)句將重復(fù)調(diào)用自身331160280次,在瀏覽器中執(zhí)行必然導(dǎo)致腳本失控,而采用下面的算法則只需要調(diào)用40次

fibonacci =function(n){

var memo ={0:0,1:0}; //計(jì)算結(jié)果緩存

var shell =function(n){

var result = memo[n];

if(typeof result !='number') //如果值沒(méi)有被計(jì)算則進(jìn)行計(jì)算

memo[n]= shell(n-1)+ shell(n -2)

return memo[n];

}

return shell(n);

}

這項(xiàng)技術(shù)被稱為memoization,他的原理很簡(jiǎn)單就是同樣的結(jié)果沒(méi)必要計(jì)算兩次。另一種消除遞歸的辦法就是利用迭代,遞歸和迭代經(jīng)常會(huì)被作為互相彌補(bǔ)的方法。

第四步,減少DOM操作,DOM操作的代價(jià)是相當(dāng)昂貴的,大多數(shù)DOM操作都會(huì)觸發(fā)瀏覽器的回流(reflow)操作。例如添加刪除節(jié)點(diǎn),修改元素樣式,獲取需要經(jīng)過(guò)計(jì)算的元素樣式等。我們要做的就是盡量少的觸發(fā)回流操作。

el.style.width ='300px' el.style.height ='300px' el.style.backgroundColor ='red'

上面的操作會(huì)觸發(fā)瀏覽器的三次回流操作,再看下面的方式:

el.className ='newStyle'

通過(guò)設(shè)置改元素的className一次設(shè)置多個(gè)樣式屬性,將樣式寫再CSS文件中,只觸發(fā)一次回流,達(dá)到了同樣是效果而且效率更高。因?yàn)闉g覽器最擅長(zhǎng)的就是根據(jù)class設(shè)置樣式。

還有很多可以減少DOM操作的方法,在此就不多說(shuō)了,但是一個(gè)基本的原則就是讓瀏覽器去做它自己擅長(zhǎng)的事情,例如通過(guò)class來(lái)改變?cè)氐膶傩浴?/p>

相信經(jīng)過(guò)上面的優(yōu)化的過(guò)程必定可以大大提高用戶體驗(yàn),不會(huì)出現(xiàn)瀏覽器被鎖死和彈出腳本失控的對(duì)話框,使你的瀏覽器從繁重的任務(wù)中解放出來(lái)。需要指出的是上面這些優(yōu)化并不是必須的,只有當(dāng)一段腳本的執(zhí)行時(shí)間真的影響到了用戶體驗(yàn)才需要進(jìn)行。雖然讓用戶覺(jué)得腳本的執(zhí)行變快了,但其實(shí)完成同一個(gè)操作的時(shí)間可能被延長(zhǎng)了,這些技術(shù)只是讓瀏覽器處于一個(gè)快速響應(yīng)的狀態(tài),使瀏覽更流暢。

Safari啟用javascript某些網(wǎng)站打不開(kāi),并導(dǎo)致所有之前打開(kāi)的網(wǎng)頁(yè)全部崩潰。

如果是iPhone手機(jī)出現(xiàn)此問(wèn)題,可以進(jìn)入iPhone手機(jī)設(shè)置-蜂窩數(shù)據(jù)-無(wú)線局域網(wǎng)與蜂窩數(shù)據(jù)應(yīng)用,打開(kāi)允許相關(guān)應(yīng)用訪問(wèn)權(quán)限即可。


標(biāo)題名稱:關(guān)于javascript卡死的信息
分享路徑:http://weahome.cn/article/dsdchod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部