當前位置:首頁 » 網頁前端 » 前端網頁報錯
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端網頁報錯

發布時間: 2022-10-24 12:40:36

❶ Web前端新手應該注意的常見錯誤有哪些

今天小編要跟大家分享的文章是關於Web前端新手應該注意的常見錯誤有哪些?Web全棧是目前比較流行的語言,因為前端較其他語言相比,簡單好學,而且現在的互聯網公司幾乎缺少不了Web前端開發,行業的需求致使大量的人轉型前端,對於剛學前端的人來講,他們缺乏開發經驗,在項目開發中容易出錯,為了使大家少走彎路,綜合一批前端程序員,收集了一些最常見的錯誤,下面我們一起來看一看吧,希望能夠對大家有所幫助。

一、JQuery選擇器


在一個HTMLDOM
樹中,進行一個比較復雜的元素選擇,不包含某些文字的帶有某某類名的元素的鄰居的父元素的然後怎麼做?寫一個很復雜的jQuery選擇器?打住。


jquery選擇器原理是用正則表達式去分解你的選擇器字元串(這一部分叫做Sizzle),然後再用內置的一些遍歷函數如prev,next等(其實這些函數也是基於DOM提供的方法),去找到你想要的元素。


我會不去盲目地進行Sizzle的語義歧義測試,而是自己根據自己的邏輯去用prev,next等去找到自己的元素;而且退一萬步來說,我也會盡量避免使用復雜的選擇器(之前的方案也有提及),單位個元素用ID,多個元素用類,絕對高效准確。


二、基礎數據結構與演算法


現在有兩個不同的JSON,比較復雜,可以參考這里的DEMO中返回的JSON。要比較它們的差異,除了用現成的工具如beyond
compare以外,如果我們的機器上沒有安裝這個工具,能如何較快解決?


作為一個程序員,一個個對比是不可行的,對比完也不會有什麼收獲。我會把之放進Excel中(如果你機器連這個都沒有,那忽視我),先排序,再用二分法去快速定位找到有差異的JSON屬性,即使是1024個欄位的大數據,也最多10次的定位即可找到。


其實演算法這東西,並不是給你一道題目然後把死記下來的內容背出來,而是當你遇到相應的情景時,能想到用這個方法去解決。


三、HTTP協議


現在很多項目中都是用ajax去提交JSON到後台了,原始的那種HTTP提交已經比較少見(至少在我的項目中是這樣),但是我們也不能忘記設置form的method、action的原始提交方式,因為這個才是表單提交的原型,有助於我們理解HTTP協議,例如POST和GET的區別,理解數據是怎麼樣從前端到達後端的,又是怎麼樣從後端返回到前端。


當你理解了這個,就可以更好地跟後端進行溝通,遇到數據上的問題也能較快地定位解決。


四、javascript作用域


學過好幾種的編程語言,作用域問題都是老生常談了。在javascript中更是有函數的作用域這一基礎知識。關於這個,推薦《javascript權威指南》。當時我是把中文的讀去再去讀英文,把英文的讀完去找圖解,才感覺到把這一點理解清楚的。


五、HTML/CSSDOCTYPE


曾經項目中遇到這樣一個問題,用其他瀏覽器打開頁面是好的,唯獨是IE8打開時出奇地慢。我注意到IE8打開時慢但CPU消耗並不高,只是網頁空白很久沒渲染出來,可以排除JS演算法上的問題。


經過細心研讀代碼發現,有人把一部分script、link等標簽放到了DOCTYPE的前面。


DOCTYPE是用來告訴瀏覽器解釋整個文檔的一套法則的,一定要放在HTML部分的最前面,先有script標簽,那就意味著瀏覽器已經開始解釋了,後面再有DOCTYPE也是沒有意義的了。把DOCTYPE放到HTML部分的最前面,一開始提及的問題就解決了。


以上就是小編今天為大家分享的關於Web前端新手應該注意的常見錯誤有哪些的文章,希望本篇文章能夠對正在從事Web前端工作的小夥伴們有所幫助。想要了解更多Web前端知識記得關注北大青鳥Web培訓官網。最後祝願小夥伴們工作順利!


❷ Web前端初學者要避免的常見錯誤有哪些

今天小編要跟大家分享的文章是關於Web前端初學者要避免的常見錯誤有哪些?相信對於剛剛接觸Web前端的初學者,會遇到很多問題,在學習的過程中也會有各種各樣的挫折。雖然有些錯誤與某一個具體的行為相關,但有些錯誤卻是所有Web開發人員都需要面對的挑戰。

今天小編為大家准備了這篇關於Web初學者常見的錯誤的文章,希望能夠對小夥伴們有所幫助。下面來和小編一起看一看吧!


錯誤一:所謂「應該能行」的代碼


錯誤:無論是JavaScript,還是在伺服器上運行的代碼,開發人員都需要測試並確認它是否可以正常工作,而不是在部署了之後,就認為它應該就能從一而終地運行。


影響:不經過適當錯誤檢查的網站就是對最終用戶耍流氓。不僅會極大地影響用戶體驗,而且其錯誤消息內容的類型可能會給黑客線索來滲透這個站點。


如何避免:是人都會犯錯,這個哲理同樣適用於編碼。使用JavaScript,一定要實施好的技術來防止並抓住錯誤。雖然這篇文章描繪了用JavaScript編碼WindoWs應用程序,但是大部分的內容也適用於Web開發,許多提示都很不錯!另一種能讓代碼變得可靠又能在未來變化中存活下來的方法是單元測試。


如果我們夠仔細,那麼就能捕捉到伺服器端的代碼失敗,而不被用戶發現。只顯示必要的信息,並且一定要確保設置友好的錯誤頁面,如HTTP404s。


錯誤二:寫分叉代碼


錯誤:本著支持所有瀏覽器和版本的崇高理念,開發人員立志創建可對任意可能情況作出回應的代碼。代碼中if語句成堆,所有方向都有分叉。


影響:隨著瀏覽器新版本的更新,代碼文件會變得越來越笨拙和難以管理。


如何避免:實現代碼的功能檢測和瀏覽器/版本檢測。功能檢測技術不僅可以顯著減少代碼量,還更易於閱讀和管理。不妨考慮使用如Modernizr這樣的庫,不僅有助於功能檢測,還能自動幫助提供不能跟上HTML5和CSS3速度的舊版瀏覽器的反饋支持。


錯誤三:非響應式設計


錯誤:假設開發/設計人員在相同尺寸的顯示器上開發網站。


影響:當在移動設備或在非常大的屏幕查看網站時,用戶體驗要麼很難看到頁面的重要方面,要麼甚至要時刻注意著不導航至其他網頁。


如何避免:響應式的思維方式。在網站中使用響應式設計。這里有一些關於這方面的實用教程,包括響應式圖片,還有一個非常受歡迎的庫,那就是Bootstrap。


錯誤四:網站過多刷新


錯誤:創建的網站需要為每一個互動而全面刷新頁面。


影響:類似於頁面臃腫,頁面載入時間的性能會受到影響。用戶體驗缺乏流暢性,並且每次互動都可能導致網頁短暫(或長時間)的復位。


如何避免:快速避免這種情況的一個方法就是,通過測定回發到伺服器的內容是否是真正需要的。例如,當不依賴伺服器端資源的時候,客戶端腳本可用於提供直接結果。你也可以應用AJAX技術或進一步使用單頁的應用程序「SPA」方法。流行的JavaScript庫/框架,如JQuery、KnockoutJS和AngularJS,能讓這些方法的採用變得容易得多。


錯誤五:做了太多的無用功


錯誤:開發人員花了很長的時間來創建Web內容。大量的時間花在了重復的任務上,或者自己敲代碼寫了很多。


影響:初始網站的發布和後續的更新時間過於冗長。如果其他開發人員也在做同樣的工作,卻用了更少的時間和精力,那麼你的開發價值顯然就低了。手動勞動很容易出現錯誤,而排除故障錯誤需要更多的時間。


如何避免:探索你的選擇。在開發的每一個階段考慮使用新的工具和新的流程技術。例如,你目前使用的代碼編輯器相比SublimeText和Visual
Studio,如何?不管你使用的是什麼樣的代碼編輯器,你最近有好好鑽研它的功能嗎?也許只投入稍稍一點時間去仔細閱讀文檔,就可以發現做事的新方法,為今後節省一個又一個小時的時間。


例如,在這篇文章中,擴展Visual
Studio可以為Web開發人員提高生產效率。不要錯過網上可用的幫助工具!例如,檢查在dev.modern.ie上的工具以簡化測試(跨多個平台和設備)以及排除故障。


結語


通過識別這些常見的錯誤,Web開發人員可以避免很多讓其他人飽受煎熬的挫折。我們不僅需要承認錯誤,還應該清楚錯誤的影響,並採取措施避免錯誤,這樣才能有更好的開發表現——並有信心完成任務!


以上就是小編今天為大家分享的關於Web前端初學者要避免的常見錯誤有哪些的文章,希望本篇文章能夠對正在從事web前端工作的小夥伴們有所幫助,想要了解更多web前端知識記得關注北大青鳥web培訓官網,最後祝願小夥伴們工作順利,成為一名優秀的web前端工程師。


❸ 建設銀行前端序列錯誤

瀏覽器設置問題,您重設置一下瀏覽器試試看,(點擊IE瀏覽器的"工具菜單"-internet選項-高級選項卡-重置按鍵,重置完成後重啟瀏覽器。
瀏覽器安全設置級別較高,插件被攔截了,您交易過程中注意瀏覽器上方或下方有沒有彈出阻止載入項之類的,如果有您點擊載入或在所有網站運行即可。
在出現問題的界面點擊瀏覽器的「工具菜單」-「兼容性視圖設置」;在彈出的窗口中點擊「添加」按鍵,此時會把建行的網站添加進去,添加完成後點擊「關閉」按鍵,然後刷新網頁再重新登陸即可。
程序錯誤是指在軟體運行中因為程序本身有錯誤而造成的功能不正常、死機、數據丟失、非正常中斷等現象。系統程序錯誤是指系統程序本身有錯誤而造成的功能不正常、死機或中斷等現象。有些系統程序錯誤會造成計算機安全隱患,此時叫做系統漏洞。

❹ 網頁顯示javascript錯誤..怎麼解決

解決辦法:

1、打開IE瀏覽器,在IE瀏覽器上方的菜單欄中找到工具項,然後選擇工具項中的「Internet選項」;

❺ Web前端工程師如何處理Web前端的異常_

今天小編要跟大家分享的文章是關於Web前端工程師如何處理前端的異常。前端一直是距離用戶最近的一層,隨著產品的日益完善,我們會更加註重用戶體驗,而前端異常卻如鯁在喉,甚是煩人。下面我們就來看一看前端工程師該如何處理前端異常。一、為什麼要處理異常異常是不可控的,會影響最終的呈現結果,但是我們有充分的理由去做這樣的事情。


1.增強用戶體驗;
2.遠程定位問題;
3.未雨綢繆,及早發現問題;
4.無法復線問題,尤其是移動端,機型,系統都是問題;
5.完善的前端方案,前端監控系統;


對於JS而言,我們面對的僅僅只是異常,異常的出現不會直接導致JS引擎崩潰,最多隻會使當前執行的任務終止。二、需要處理哪些異常?對於前端來說,我們可做的異常捕獲還真不少。總結一下,大概如下:


·___S語法錯誤、代碼異常


·___JAX請求異常


·___蔡試醇釉匾斐


·___romise異常


·___frame異常


·___纈_cripterror


·___覽:塗ǘ


下面我會針對每種具體情況來說明如何處理這些異常。三、Try-Catch的誤區try-catch只能捕獲到同步的運行時錯誤,對語法和非同步錯誤卻無能為力,捕獲不到。
1.同步運行時錯誤:


try{
letname='jartto'
console.log(nam);
}catch(e){
console.log('捕獲到異常:',e);
}


輸出:


捕獲到異常:ReferenceError:namisnotdefined
at:3:15


2.不能捕獲到語法錯誤,我們修改一下代碼,刪掉一個單引號:


try{
letname='jartto;
console.log(nam);
}catch(e){

console.log('捕獲到異常:',e);
}


輸出:


UncaughtSyntaxError:Invalidorunexpectedtoken


不過語法錯誤在我們開發階段就可以看到,應該不會順利上到線上環境。


3.非同步錯誤


try{
setTimeout(()=>{
undefined.map(v=>v);
},1000)
}catch(e){
console.log('捕獲到異常:',e);
}


我們看看日誌:


UncaughtTypeError:Cannotreadproperty'map'of
undefined
atsetTimeout(:3:11)


並沒有捕獲到異常,這是需要我們特別注意的地方。四、window.onerror不是萬能的當JS運行時錯誤發生時,window會觸發一個ErrorEvent介面的error事件,並執行window.onerror()。/**
*@param{String}message錯誤信息
*@param{String}source出錯文件
*@param{Number}lineno行號
*@param{Number}colno列號
*@param{Object}errorError對象(對象)
*/

window.onerror=function(message,source,lineno,colno,error){
console.log('捕獲到異常:',{message,source,lineno,colno,error});
}

1.首先試試同步運行時錯誤


window.onerror=function(message,source,lineno,colno,
error){
//message:錯誤信息(字元串)。
//source:發生錯誤的腳本URL(字元串)
//lineno:發生錯誤的行號(數字)
//colno:發生錯誤的列號(數字)
//error:Error對象(對象)
console.log('捕獲到異常:',{message,source,lineno,colno,
error});
}
Jartto;


可以看到,我們捕獲到了異常:

2.再試試語法錯誤呢?


window.onerror=function(message,source,lineno,colno,
error){
console.log('捕獲到異常:',{message,source,lineno,colno,error});
}
letname='Jartto


控制台列印出了這樣的異常:


UncaughtSyntaxError:Invalidorunexpectedtoken


什麼,竟然沒有捕獲到語法錯誤?


3.懷著忐忑的心,我們最後來試試非同步運行時錯誤:


window.onerror=function(message,source,lineno,colno,
error){
console.log('捕獲到異常:',{message,source,lineno,colno,error});
}
setTimeout(()=>{
Jartto;
});


控制台輸出了:


捕獲到異常:{message:"Uncaught
ReferenceError:Jarttoisnotdefined",source:
"http://127.0.0.1:8001/",lineno:36,colno:5,error:
ReferenceError:Jarttoisnotdefined
atsetTimeout(http://127.0.0.1:8001/:36:5)}


4.接著,我們試試網路請求異常的情況:






我們發現,不論是靜態資源異常,或者介面異常,錯誤都無法捕獲到。


補充一點:window.onerror函數只有在返回true的時候,異常才不會向上拋出,否則即使是知道異常的發生控制台還是會顯示UncaughtError:xxxxx


window.onerror=function(message,source,lineno,colno,
error){
console.log('捕獲到異常:',{message,source,lineno,colno,error});
returntrue;
}
setTimeout(()=>{
Jartto;
});


控制台就不會再有這樣的錯誤了:


UncaughtReferenceError:Jarttoisnotdefined
atsetTimeout((index):36)


需要注意:onerror最好寫在所有JS腳本的前面,否則有可能捕獲不到錯誤;onerror無法捕獲語法錯誤;


到這里基本就清晰了:在實際的使用過程中,onerror主要是來捕獲預料之外的錯誤,而try-catch則是用來在可預見情況下監控特定的錯誤,兩者結合使用更加高效。


問題又來了,捕獲不到靜態資源載入異常怎麼辦?五、window.addEventListener當一項資源(如圖片或腳本)載入失敗,載入資源的元素會觸發一個Event介面的error事件,並執行該元素上的onerror()處理函數。這些error事件不會向上冒泡到window,不過(至少在Firefox中)能被單一的window.addEventListener捕獲。



window.addEventListener('error',(error)=>{
console.log('捕獲到異常:',error);
},true)




控制台輸出:


SHAPE*MERGEFORMAT


由於網路請求異常不會事件冒泡,因此必須在捕獲階段將其捕捉到才行,但是這種方式雖然可以捕捉到網路請求的異常,但是無法判斷HTTP的狀態是404還是其他比如500等等,所以還需要配合服務端日誌才進行排查分析才可以。


需要注意:


·___煌榔饗路禱氐_rror對象可能不同,需要注意兼容處理。


·___枰⒁獗苊_ddEventListener重復監聽。六、PromiseCatch在promise中使用catch可以非常方便的捕獲到非同步error,這個很簡單。


沒有寫catch的Promise中拋出的錯誤無法被onerror或try-catch捕獲到,所以我們務必要在Promise中不要忘記寫catch處理拋出的異常。


解決方案:為了防止有漏掉的Promise異常,建議在全局增加一個對unhandledrejection的監聽,用來全局監聽UncaughtPromiseError。使用方式:


window.addEventListener("unhandledrejection",
function(e){
console.log(e);
});


我們繼續來嘗試一下:


window.addEventListener("unhandledrejection",
function(e){
e.preventDefault()
console.log('捕獲到異常:',e);
returntrue;
});
Promise.reject('promiseerror');


可以看到如下輸出:

那如果對Promise不進行catch呢?


window.addEventListener("unhandledrejection",
function(e){
e.preventDefault()
console.log('捕獲到異常:',e);
returntrue;
});
ewPromise((resolve,reject)=>{
reject('jartto:promiseerror');
});


嗯,事實證明,也是會被正常捕獲到的。


所以,正如我們上面所說,為了防止有漏掉的Promise異常,建議在全局增加一個對unhandledrejection的監聽,用來全局監聽UncaughtPromiseError。


補充一點:如果去掉控制台的異常顯示,需要加上:


event.preventDefault();七、VUEerrorHandlerVue.config.errorHandler=(err,vm,info)=>{
console.error('通過vue
errorHandler捕獲的錯誤');
console.error(err);
console.error(vm);
console.error(info);
}八、React異常捕獲React16提供了一個內置函數componentDidCatch,使用它可以非常簡單的獲取到react下的錯誤信息


componentDidCatch(error,info){
console.log(error,info);
}


除此之外,我們可以了解一下:errorboundaryUI的某部分引起的JS錯誤不應該破壞整個程序,為了幫React的使用者解決這個問題,React16介紹了一種關於錯誤邊界(errorboundary)的新觀念。


需要注意的是:errorboundaries並不會捕捉下面這些錯誤。


1.事件處理器2.非同步代碼3.服務端的渲染代碼4.在errorboundaries區域內的錯誤


我們來舉一個小例子,在下面這個componentDIdCatch(error,info)里的類會變成一個errorboundary:


.Component{
constructor(props){
super(props);
this.state={hasError:false};
}
componentDidCatch(error,info){
//DisplayfallbackUI
this.setState({hasError:true});
//
logErrorToMyService(error,info);
}
render(){
if(this.state.hasError){
//
return

Somethingwentwrong.

;
}
returnthis.props.children;
}
}


然後我們像使用普通組件那樣使用它:







componentDidCatch()方法像JS的catch{}模塊一樣工作,但是對於組件,只有class類型的組件(classcomponent)可以成為一個errorboundaries。


實際上,大多數情況下我們可以在整個程序中定義一個errorboundary組件,之後就可以一直使用它了!九、iframe異常對於iframe的異常捕獲,我們還得借力window.onerror:


window.onerror=function(message,source,lineno,colno,
error){
console.log('捕獲到異常:',{message,source,lineno,colno,error});
}


一個簡單的例子可能如下:


frameborder="0">
十、Scripterror一般情況,如果出現Scripterror這樣的錯誤,基本上可以確定是出現了跨域問題。這時候,是不會有其他太多輔助信息的,但是解決思路無非如下:


跨源資源共享機制(CORS):我們為script標簽添加crossOrigin屬性。


crossorigin>


或者動態去添加js腳本:


constscript=document.createElement('script');
script.crossOrigin='anonymous'
script.src=url;
document.body.appendChild(script);


特別注意,伺服器端需要設置:Access-Control-Allow-Origin


此外,我們也可以試試這個-解決ScriptError的另類思路:


constoriginAddEventListener=EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener=function(type,listener,options){
constwrappedListener=function(...args){
try{
returnlistener.apply(this,args);
}
catch(err){
throwerr;
}
}
returnoriginAddEventListener.call(this,type,wrappedListener,options);
}


簡單解釋一下:


·___男戳_ventTarget的addEventListener方法;


·___源氳_istener進行包裝,返回包裝過的listener,對其執行進行try-catch;


·___榔韃換岫_ry-catch起來的異常進行跨域攔截,所以catch到的時候,是有堆棧信息的;


·___匭_hrow出來異常的時候,執行的是同域代碼,所以window.onerror捕獲的時候不會丟失堆棧信息;


利用包裝addEventListener,我們還可以達到「擴展堆棧」的效果:


(()=>{
constoriginAddEventListener=EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener=function(type,listener,options){
+//捕獲添加事件時的堆棧
+constaddStack=newError(`Event(${type})`).stack;
constwrappedListener=function(...args){
try{
returnlistener.apply(this,args);
}
catch(err){
+//異常發生時,擴展堆棧
+err.stack+=' '+addStack;
throwerr;
}
}
returnoriginAddEventListener.call(this,type,wrappedListener,options);
}
})();十一、崩潰和卡頓卡頓也就是網頁暫時響應比較慢,JS可能無法及時執行。但崩潰就不一樣了,網頁都崩潰了,JS都不運行了,還有什麼辦法可以監控網頁的崩潰,並將網頁崩潰上報呢?


崩潰和卡頓也是不可忽視的,也許會導致你的用戶流失。


1.利用window對象的load和beforeunload事件實現了網頁崩潰的監控。不錯的文章,推薦閱讀:Logging
InformationonBrowserCrashes。window.addEventListener('load',function(){
sessionSt

❻ 前端錯誤Uncaught TypeError: Cannot read property 'length' of null錯誤怎麼處理

通過統計資料庫中的1000多個項目,我們發現在 JavaScript 中最常出現的錯誤有10個。下面會向大家介紹這些錯誤發生的原因以及如何防止。
1. Uncaught TypeError: Cannot Read Property

這是 JavaScript 開發人員最常遇到的錯誤。當你讀取一個屬性或調用一個未定義對象的方法時,Chrome 中就會報出這樣的錯誤。

導致這個錯誤發生的原因有很多,常見的一種情況是在渲染 UI 組件時,不正確地初始化狀態。我們來看一個真實的應用程序中發生這種情況的例子。

以上代碼有兩個重要方面:

一是組件的狀態(例如 this.state),在開始生命周期之前是 undefined 狀態。

二是當通過非同步的方式獲取數據時,無論是在構造函數中 componentWillMount 中,還是在構造函數中提取 componentDidMount,組件在數據載入之前至少會渲染一次。當檢測首次渲染時,會發現 this.state.items 是未定義的。此時就會出現一個錯誤 -「Uncaught TypeError: Cannot read property 『map』 of undefined" in the consol」。

解決的方法很簡單:在構造函數中使用合理的默認值進行狀態初始化。

2. TypeError: 『undefined』 Is Not an Object (evaluating...)

這是在 Safari 中讀取屬性或調用未定義對象上的方法時發生的錯誤,這與 Chrome 的上述錯誤基本相同,只是 Safari 使用不同的錯誤消息。

3. TypeError: Null Is Not an Object (evaluating...)

這是在 Safari 中讀取屬性或調用空對象上的方法時發生的錯誤。

在實際情況中,導致這種錯誤的原因之一是:在元素載入之前,就嘗試在 JavaScript 中使用 DOM 元素。這是因為 DOM API 對於空白的對象引用返回 null。

任何執行和處理 DOM 元素的 JS 代碼,都應該在創建 DOM 元素之後執行。JS 代碼按照 HTML 中的規定自上而下進行解釋。因此,如果在 DOM 元素之前存在標簽,則腳本標簽內的 JS 代碼就會在瀏覽器分析 HTML 頁面時執行。如果在載入腳本之前尚未創建 DOM 元素,就會出現這樣的錯誤。

在這個例子中,我們可以通過添加一個事件偵聽器來解決這個問題,事件偵聽器會在頁面准備就緒時通知我們。一旦 addEventListener 被觸發,該 init( ) 方法就可以使用 DOM 元素。

4. (unknown): Script Error

當未捕獲的 JavaScript 錯誤違背跨邊界原則時,就會發生腳本錯誤。例如,如果將 JavaScript 代碼託管在 CDN 上,則任何未被捕獲的錯誤(通過 window.onerror 處理程序發出的錯誤,而不是 try-catch 中捕獲到的錯誤)將僅報告為「腳本錯誤」。這是瀏覽器的一種安全措施,主要用於防止跨域傳遞數據的情況出現。

要獲取真實的錯誤消息,需要執行以下操作:

Access-Control-Allow-Origin


Access-Control-Allow-Origin 設置為 *, 表示可以從任何域正確訪問資源。* 如有必要,也可以用自己的域名進行替換,例如:

Access-Control-Allow-Origin: www.example.com。

以下是在各種環境中設置的一些示例:

在腳本標簽上設置crossorigin =「anonymous」

在你的 HTML 源代碼中,為每一個腳本設置
Access-Control-Allow-Origin,在設置 SCRIPT 標簽中,設置 crossorigin="anonymous"。在將 crossorigin 屬性添加到腳本標簽之前,請確保正在向腳本文件發送 header。在 Firefox 中,如果 crossorigin 屬性存在但 Access-Control-Allow-Origin 標題不存在,則腳本不會執行。

5. TypeError: Object Doesn』t Support Property

當調用未定義的方法時,IE 中會發生這樣的錯誤。

這相當於 Chrome 中的 「undefined』 is not a function」 錯誤。對於相同的邏輯錯誤,不同的瀏覽器可能會有不同的錯誤消息。

這是在 IE 的 Web 應用程序中使用 JavaScript 命名空間出現的一個常見問題。出現這種情況的絕大部分原因是IE無法將當前名稱空間內的方法綁定到this關鍵字。例如,如果你有 JS Rollbar 方法的命名空間 isAwesome。通常,如果位於 Rollbar 命名空間內,則可以使用以下語法調用該 isAwesome 方法:

6. TypeError: 『undefined』 Is Not a Function

當調用未定義的函數時,Chrome 中就會發生這樣的錯誤。

執行上面的代碼會導致以下錯誤:「Uncaught TypeError: undefined is not a function。」 發生以上錯誤的原因是,當你調用 setTimeout( ) 時,實際上是在調用 window.setTimeout( ),傳遞給 setTimeout( ) 的匿名函數是在窗口對象的上下文中定義的,而該窗口對象沒有 clearBoard( ) 方法。

符合舊版瀏覽器的解決方案是以變數的方式簡單地將引用保存在 this 中,然後通過閉包繼承。

❼ Web前端工程師要知道的常見錯誤

今天小編要跟大家分享的文章是關於Web前端工程師要知道的常見錯誤。熟悉web前端開發工作的小夥伴們都知道web開發中會有很多錯誤的做法,以及如何避免這些錯誤。幫助你在開發工作中,輕松避開那些不必要的坑!下面來和小編一起看一看吧!

一、寫一些過時的HTML


錯誤:早期的互聯網比起我們現在,標記的選擇要少得多。然而,舊習難改,現在很多開發人員寫的HTML就好像還身處20世紀一樣。舉例來說,我們使用

元素用於布局,當其他特定語義標簽更適合的時候使用
元素,在當前HTML標准不受支持的時候使用
標簽,在頁面上間隔項目,如果有大量_址堤宓幕啊


影響:遵從這種過時的HTML規則可能會導致標記過於復雜,結果是在不同的瀏覽器中發生不同的行為。而且沒有了改進瀏覽器的動力,因為沒有必要更新到最新的瀏覽器,如Microsoft
Edge,哪怕是InternetExplorer版本(11、10、9)也變得沒有必要。


如何避免:停止使用
元素用於內容布局,限制使用
元素來顯示表格數據。例如可以去#了解當前可用的標記選項。使用HTML去描述內容是什麼,而不是說明內容如何展現。


二、「明明在我的瀏覽器中是可行的......」


錯誤:開發人員往往會偏愛某一個特定的瀏覽器,或者特別討厭某一個,可能主要是因為對測試網頁視圖有所偏見。也有可能是因為從網上找到的代碼示例不能保證會如何呈現在其他瀏覽器中。此外,一些瀏覽器對風格有不同的默認值。


影響:以某一個瀏覽器為中心寫的網站,在其他瀏覽器中顯示時,其質量將會很差。如何避免:在開發過程中,在所有瀏覽器和版本中測試網頁是不切實際的。不過,每隔一段時間,在多個瀏覽器中檢查網站的樣子不失為一個好方法。現在,不管你偏好的是什麼平台,總有免費的工具可用:免費的虛擬機、網站掃描儀。Visual
Studio等工具還可以調用多個瀏覽器,來顯示你正在工作的單一頁面。


三、不好的格式


錯誤:提示用戶提供信息(特別是在輸入文本欄位的時候),並假設數據會如預期接收。


影響:很多事情會(或者很有可能將會)出錯,當我們信任用戶輸入的時候。如果無法提供所需的數據,或接收到的數據不能與下面的數據模式兼容,頁面可能會失敗。更為嚴重的是,有的用戶可能會故意違背網站的資料庫,例如可以通過注入式攻擊(見OWASP:Top
102013-A1-Injections)。


如何避免:你首先要做的事是確保用戶清楚你需要什麼類型的數據。比如說,如果你只說要地址,那用戶不知道指的是單位,家庭還是電子郵件的地址!除了要具體,還要充分利用現在的HTML提供的數據驗證技術。不管數據在瀏覽器端是如何驗證的,確保它始終也在伺服器端驗證。不要讓一個串接的T-SQL語句使用來自於用戶輸入的,各個欄位的類型沒有經過確認的數據。


四、臃腫的響應結果


錯誤:頁面充滿了許多高品質的圖形和/或圖片,這些圖形和/或圖片藉助img元素的高度和寬度屬性按比例縮小。來自於頁面鏈接的文件,如CSS和JavaScript,很大。源HTML標記也可能是不必要的復雜和全面。


影響:完全渲染頁面的時間是如此之久,以致於一些用戶放棄了,或者甚至於直接不耐煩地重新請求整個頁面。在某些情況下,如果頁面處理等待太久,會出現錯誤。如何避免:不要抱有現在互聯網接入越來越快的僥幸心態——從而允許臃腫的場景。相反,要將從瀏覽器到你的網站的來回當為一種成本。圖像是網頁臃腫的主要罪犯。為了最大限度地減少圖像成本,減輕頁面載入的壓力,可以試試以下三個技巧:


§問問你自己:「這些圖形真的有必要嗎?」刪除不需要的圖片。


§使用例如ShrinkO』Matic或RIOT的工具來減少圖像文件大小。


§預載入圖像。這不會提高初始下載的成本,但可以讓網站其他頁面圖像載入速度更快。


另一種減少成本的方式是壓縮CSS和JavaScript鏈接文件。有很多的工具,如MinifyCSS和MinifyJS都能幫你做到。


五、創建所謂「應該能行」的代碼


錯誤:無論是JavaScript,還是在伺服器上運行的代碼,開發人員都需要測試並確認它是否可以正常工作,而不是在部署了之後,就認為它應該就能從一而終地運行。


影響:不經過適當錯誤檢查的網站就是對最終用戶耍流氓。不僅會極大地影響用戶體驗,而且其錯誤消息內容的類型可能會給黑客線索來滲透這個站點。


如何避免:是人都會犯錯,這個哲理同樣適用於編碼。使用JavaScript,一定要實施好的技術來防止並抓住錯誤。雖然這篇文章描繪了用JavaScript編碼Windows應用程序,但是大部分的內容也適用於web開發,許多提示都很不錯!另一種能讓代碼變得可靠又能在未來變化中存活下來的方法是單元測試。


如果我們夠仔細,那麼就能捕捉到伺服器端的代碼失敗,而不被用戶發現。只顯示必要的信息,並且一定要確保設置友好的錯誤頁面,如HTTP404s。


六、寫分叉代碼


錯誤:本著支持所有瀏覽器和版本的崇高理念,開發人員立志創建可對任意可能情況作出回應的代碼。代碼中if語句成堆,所有方向都有分叉。


影響:隨著瀏覽器新版本的更新,代碼文件會變得越來越笨拙和難以管理。


如何避免:實現代碼的功能檢測和瀏覽器/版本檢測。功能檢測技術不僅可以顯著減少代碼量,還更易於閱讀和管理。不妨考慮使用如Modernizr這樣的庫,不僅有助於功能檢測,還能自動幫助提供不能跟上HTML5和CSS3速度的舊版瀏覽器的反饋支持。


七、非響應式設計


錯誤:假設開發/設計人員在相同尺寸的顯示器上開發網站。


影響:當在移動設備或在非常大的屏幕查看網站時,用戶體驗要麼很難看到頁面的重要方面,要麼甚至要時刻注意著不導航至其他網頁。


如何避免:響應式的思維方式。在網站中使用響應式設計。這里有一些關於這方面的實用教程,包括響應式圖片,還有一個非常受歡迎的庫,那就是Bootstrap。


八、製作無意義的頁面


錯誤:製作面向公眾內容的網頁才是有用的,絕不能不提供關於搜索引擎的任何線索。沒有實現可訪問性功能。


影響:如果不能讓搜索引擎發現網頁,那麼,可能會只有少量或根本沒有訪問。


如何避免:使用SEO(搜索引擎優化)和HTML的支持可訪問性。關於SEO,一定要添加標簽以提供有意義的網頁關鍵字和描述。About
Tech就寫得很好,可以借鑒。為了能有更好的可訪問性功能體驗,請對每一個img和area標簽提供一個alt="yourimagedescription"
屬性。更多建議請見AboutTech。你也可以在CynthiaSays測試公共網頁,看它是否兼容Section508。


九、網站過多刷新


錯誤:創建的網站需要為每一個互動而全面刷新頁面。


影響:類似於頁面臃腫(參見#4),頁面載入時間的性能會受到影響。用戶體驗缺乏流暢性,並且每次互動都可能導致網頁短暫(或長時間)的復位。


如何避免:快速避免這種情況的一個方法就是,通過測定回發到伺服器的內容是否是真正需要的。例如,當不依賴伺服器端資源的時候,客戶端腳本可用於提供直接結果。你也可以應用AJAX技術或進一步使用單頁的應用程序「SPA」方法。流行的JavaScript庫/框架,如JQuery、KnockoutJS和AngularJS,能讓這些方法的採用變得容易得多。


十、做了太多的無用功


錯誤:開發人員花了很長的時間來創建web內容。大量的時間花在了重復的任務上,或者自己敲代碼寫了很多。


影響:初始網站的發布和後續的更新時間過於冗長。如果其他開發人員也在在做同樣的工作,卻用了更少的時間和精力,那麼你的開發價值顯然就低了。手動勞動很容易出現錯誤,而排除故障錯誤需要更多的時間。


如何避免:探索你的選擇。在開發的每一個階段考慮使用新的工具和新的流程技術。例如,你目前使用的代碼編輯器相比SublimeText和Visual
Studio,如何?不管你使用的是什麼樣的代碼編輯器,你最近有好好鑽研它的功能嗎?也許只投入稍稍一點時間去仔細閱讀文檔,就可以發現做事的新方法,為今後節省一個又一個小時的時間。例如,在這篇文章中,擴展Visual
Studio可以為web開發人員提高生產效率。


不要錯過網上可用的幫助工具!例如,檢查在dev.modern.ie上的工具以簡化測試(跨多個平台和設備)以及排除故障。


你也可以通過實現流程自動化以減少時間和錯誤。這方面的例子是使用Grunt工具,例如它的自動化功能可以減小文件(見第4點)。另一個例子是Bower,可以協助管理庫/框架(參見第9點)。


至於web伺服器本身?在例如MicrosoftAzureWeb
Apps的幫助下,你可以快速創建一個網站,幾乎所有的開發場景都可以很輕輕鬆鬆地規模化到你的業務中!


總結:


通過識別這些常見的錯誤,web開發人員可以避免很多讓其他人飽受煎熬的挫折。我們不僅需要承認錯誤,還應該清楚錯誤的影響,並採取措施避免錯誤,這樣才能有更好的開發表現——並有信心完成任務!


以上就是小編今天為大家分享的關於Web前端工程師要知道的常見錯誤的文章,希望本篇文章能夠對正在從事web前端工作的小夥伴們有所幫助,想要了解更多web前端相關知識記得關注北大青鳥web培訓官網,最後祝願小夥伴們工作順利,成為一名優秀的web前端工程師!


譯文鏈接:#/article/10-mistakes-web-developer-make.html


英文原文:


翻譯作者:碼農網_小峰


❽ 前端報錯unexpected identifiter at (<anonymous>)

語法解析錯誤。
因為在對象結構中缺少一個逗號,除了通過在VSCode中查看外,也可以直接通過ChromeConsole切換到Source頁面查看錯誤行,並檢查此行的上下文中是否存在語法錯誤。
前端即網站前台部分,運行在PC端,移動端等瀏覽器上展現給用戶瀏覽的網頁。前端技術一般分為前端設計和前端開發,前端設計一般可以理解為網站的視覺設計,前端開發則是網站的前台代碼實現。

❾ 前端訪問後台介面403 forbidden怎麼解決

點擊開始菜單——運行,輸入「inetmgr」回車。展開默認站點。選中出現錯誤的虛擬目錄,在中間的窗口中雙擊目錄瀏覽。然後點擊右側窗口中的啟用即可,詳細步驟:

工具/原料:

Windows7

IIS

1、詳細錯誤信息:HTTP錯誤403.14 - Forbidden Web伺服器被配置為不列出此目錄的內容。