当前位置:首页 » 网页前端 » 前端网页报错
扩展阅读
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服务器被配置为不列出此目录的内容。