最近在开发前端的时候发现一个问题,这个问题应该是很多前端开发人员都容易忽视的一个问题,但却是一个很重要的问题。

就是在开发一个页面的时候,在使用某个函数时,这个函数可以正常使用,便会认为这个页面中定义或引入的js里边肯定包含有这个函数,但是事实并非如此。

如果你在开发过程中,你的页面全部都是通过异步加载进来的(一般网站的页面加载都是异步的),而自己在开发某个页面时打开过其他的页面,正好你打开过的页面中有你正在开发的这个页面要使用的函数,所以如果你在这个页面直接使用函数,然后进行测试,结果你会发现,这个函数可以正常使用,并不报错。而如果你重新刷新所有的页面,然后不要打开其他的页面,直接打开你刚开发的这个页面,页面就会出现页面异常,报没有定义有那个函数错误。

这个问题本人之前的开发中一直没有遇到过,所以,在本次开发的时候使用的一个函数并且能正常使用,本人就认为了本页面引入的js中是包含有这个函数的,让测试人员测试也没有问题,自己也就没有再去管它。

结果,这个页面在上生产一个多月之后,被发现了出来,本人当时也是一脸懵逼,最后项目组说要开会说这个问题,是要承担责任的,毕竟影响用户对这个平台的评价,本人就不得不找出问题的根本处在了什么地方了,为何自己在开发的时候没有出现,测试也没有出现,而在上生产一个多月之后出现了。

最后本人经过各层排查,发现此页面只有自己改过,所以问题一定是自己在开发过程中遗漏了什么问题。最后,自己写了几个页面和js进行了测试。发现,当一个页面通过异步加载,并覆盖掉之前页面的内容,之前的那个页面中的js其实是并没有被覆盖的,仍然存在在页面中并没有消失。所以,你如果没有经过上一个页面而直接打开这个页面就会报页面没有定义你使用的那个函数的错误

页面异步请求会保留原有的js内容的更多相关文章

  1. AJAX实现简单的注册页面异步请求

    p { margin: 0px; padding: 0px } AJAX简介 (1)AJAX = 异步 JavaScript 和 XML. (2)AJAX 是一种用于创建快速动态网页的技术. (3)通 ...

  2. 微信小程序 异步请求拿数据+使用外部js库

    信小程序(与js)通过requirejs引用外部js文件 var modelSearch = require('../../utils/modelSearch.js') 这是一个构建数据请求筛选条件的 ...

  3. javaweb局部刷新-ajax异步请求springMVC显示返回的jsp内容,代替iframe

    在jsp上要引入jquery <script src="<%=request.getContextPath()%>/js/jquery_ui/jquery.js" ...

  4. 异步请求(ajax,http) 之 逐渐完善的大全

    异步请求在我们的开发之中是经常需要学习和理解的内容,我们将会在这一篇文章中依据不同的语言和环境内容进行归类讲解. JS: ajax是我们最为常用的页面异步请求,在只需要修改部分页面内容而不需要更换全部 ...

  5. ajax异步请求数据

    源码1: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  6. Angular JS 学习笔记(自定义服务:factory,Promise 模式异步请求查询:$http,过滤器用法filter,指令:directive)

    刚学没多久,作了一个小项目APP,微信企业号开发与微信服务号的开发,使用的是AngularJS开发,目前项目1.0版本已经完结,但是项目纯粹为了赶工,并没有发挥AngularJS的最大作用,这几天项目 ...

  7. js多个异步请求

    一,两个(或多个)js异步并发执行,怎么在两个AJax异步操作之后执行一个新的操作 原题来自 ES6 方法 1.Promise 包装异步ajax操作,2.定义async 函数,3.用await等待pr ...

  8. js异步请求发展史和yield

    万恶的回调 对前端工程师来说,异步回调是再熟悉不过了,浏览器中的各种交互逻辑都是通过事件回调实现的,前端逻辑越来越复杂,导致回调函数越来越多,同时 nodejs 的流行也让 javascript 在后 ...

  9. Ajax:实现后台验证js实现get方式的异步请求,判断用户名是否重复

    <%@ page contentType="text/html;charset=UTF-8" language="java" %><html& ...

随机推荐

  1. 手机端的viewport属性

    Window.devicePixelRatioThis read-only property returns the ratio of the resolution in physical pixel ...

  2. 细说C#中的系列化与反系列化的基本原理和过程

    虽然我们平时都使用第三方库来进行系列化和反系列化,用起来也很方便,但至少得明白系列化与反系列化的基本原理. 注意:从.NET Framework 2.0 开始,系列化格式化器类SoapFormatte ...

  3. R语言通过loess去除某个变量对数据的影响

      当我们想研究不同sample的某个变量A之间的差异时,往往会因为其它一些变量B对该变量的固有影响,而影响不同sample变量A的比较,这个时候需要对sample变量A进行标准化之后才能进行比较.标 ...

  4. dockerfile语法

    dockerfiles的指令不区分大小写,但约定为全部大写 dockerfiles支持如下语法命令: 1.FROM <image name> 所有的dockerfile都必须以from命令 ...

  5. SpringMVC中使用RedirectAttributes重定向传参,防止暴露参数

    RedirectAttributes是SpringMVC3.1版本之后出来的一个功能,专门用于重定向之后还能带参数跳转的. 当我从jsp页面函数中带参数到controller层方法,方法执行完毕后返回 ...

  6. Customer segmentation – LifeCycle Grids with R(转)

    I want to share a very powerful approach for customer segmentation in this post. It is based on cust ...

  7. VR全景:720全景在线购物点亮你的眼球

    在今天,如果你还不了解什么叫做VR (Virtual Reality),那么你真的就已经Out了.现在的VR,正如当年的智能手机一样,传遍了整个世界,2016年,也被称作VR元年,各种各样的设备,以及 ...

  8. Java之枚举

    1.定义 enum 是一种数据类型,与 全局常量比较相似,都是全局的并且是可以通过类名调用的 与全局常量区别 枚举功能更强大,可以有属性和方法 枚举比全局常量更加的规范 2.枚举特性 1)可以有属性以 ...

  9. C++如何入门

    去 Visual Studiohttps://www.visualstudio.com/zh-hans/?rr=https%3A%2F%2Flink.zhihu.com%2F%3Ftarget%3Dh ...

  10. MySQL存储汉字

    之前在网上查找了很多方法,排在前排的都是修改配置文件my.ini的,没有成功,后来找到了一个解决方法: 在建表的时候,在语句后面加上段"engine = innodb default cha ...