首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS魔法堂:定义页面的Dispose方法——unload事件启示录

对于我的需求就是在页面的Dispose方法中调用登出API,经过和实施同事的沟通——只要刷新页面就触发登出。...因为respose body的内容不是有效脚本,因此会报脚本解析异常,若设置type="text/tpl"等内容时还不会发起网络请求;另外iframe、script等html元素均要加入DOM树后才能发起网络请求...; 最后想到HTMLImageElement,只要设置src属性则马上发起网络请求,而且返回非法内容导致解析失败时还是默默忍受,特别适合这次的任务:)  于是得到下面的版本 ;(function(exports...navigation机制,将页面A的状态保存到缓存中,当通过浏览器的后退/前进按钮跳转时马上从缓存中恢复页面,而不是重新实例化。...事件发生顺序:load->pageshow->pagehide->unload pageshow和pagehide的事件对象存在一个persisted属性,为true时表示从cache中恢复,false

2.4K90
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JavaScript进阶内容——DOM详解

    ('属性'); 然后我们讲一下设置属性值的方法: //注意:下面两种方法中针对class的设置不同 //设置属性值(内置属性) 对象.属性名 = '属性值'; name.className = 'class1...,mouseover,注意:这里不需要带on listener:事件处理函数,事件发生时,会调用该监听函数 useCapture:可选参数,一个布尔值,默认false;这里暂时不做讲解 代码展示: <!...) // 监听方法会依次调用所有函数 // 注意:事件类型加'',是字符串,不能带on btns[1].addEventListener('click',...-> body -> html -> document // 首先先来解释捕获 // 当我们对他们均设置function方法,当执行一个底部对象的函数,我们需要按照顺序先执行上方的函数...// 这里表示在页面内点击时 // 注意只能用addEventListener,传统方法不能使用 document.addEventListener(

    1.5K20

    JS与ES6高级编程学习笔记(一)——JavaScript核心组成

    因为它们的值都是 5,因此返回 true。 然后,当我们使用 === 操作符时,两者的值以及类型都应该是相同的。new Number() 是一个对象而不是 number,因此返回 false。...图1-6 设置函数参数的默认值输出结果 逻辑运算符&&中,如果&&的第一个表达式是false,就不再考虑第二个表达式(短路),直接返回表达式一的值;注意返回的结果不一定是布什类型。 逻辑运行算!...遇到throw语句后将不再执行后面的脚本,并且控制将被传递到调用堆栈中的第一个catch块。如果调用者函数中没有catch块,程序将会终止。...图1-25 hash示例运行结果 从HTML脚本中可以看出页面中共有两个段落p1与p2,直接访问页面时url中带有#p2所以第二段显示在最顶端。...1、点击页面一时动态加载page1.html中的内容,点击页面二时动态加载page2.html中的内容,页面不刷新。

    2.1K20

    前端成神之路-WebAPIs04

    要求:当我们在文本框中输入内容时,文本框上面自动显示大字号的内容。...window.onload 是窗口 (页面)加载事件,当文档内容完全加载完成会触发该事件(包括图像、脚本文件、CSS 文件等), 就调用的处理函数。 ? 第2种 ? ​...普通函数是按照代码顺序直接调用。 简单理解: 回调,就是回头调用的意思。上一件事干完,再回头再调用这个函数。 例如:定时器中的调用函数,事件处理函数,也是回调函数。...现阶段,我们先了解一下几个this指向 全局作用域或者普通函数中this指向全局对象window(注意定时器里面的this指向window) 方法调用中谁调用this指向谁 构造函数中this...为了解决这个问题,利用多核 CPU 的计算能力,HTML5 提出 Web Worker 标准,允许 JavaScript 脚本创建多个线程,但是子线程完全受主线程控制。

    1.5K10

    从一道CTF学习Service Worker的利用

    adminname=123&adminpwd=123 所以本题需要通过XSS拦截并获取登陆时GET请求的密码,然后以admin身份登录,不能通过常规的盗取cookie实现。...callback=alert(1);// 返回: alert(1);//({"status":false}) 需要注意的是,这个jsonp限制了返回值的长度。.../ 的子路径),并且, scope 参数不能设置为第一个参数的上层路径( scope 范围必须要小于 Service Worker 脚本本身的路径范围),几个例子: 无效:"/assets/js/sw.js...); 原理:通过监听 fetch 事件,截获用户的请求,篡改返回,向返回的页面上嵌入恶意的JS脚本。...注意到跨域页面上只有一个光秃秃的跨域操作,并没有其他操作,但作为媒介用以设置其子域-登录验证api上的SW脚本(设置脚本时访问的是跨域页面而没有访问劫持页面) 利用条件:1.baidu.com上发现了XSS

    1.2K40

    客户端的js js脚本的引入 js的解析过程

    浏览器不会执行之间的代码 html中的事件处理程序 当脚本所在的html文件被载入的时候。脚本里的js会执行一次。...该代码执行会像页面上的脚本一样,查询和设置文档的内容,呈现和行为(不能有返回值,会重新促使浏览器渲染)即通过书签,操作文档,将文档替换成为新的内容 js程序的执行 这些代码都会功用同一个全局window...) // 如果文档以及载入完成 window.setTimeout(f, 0); // 设置一个定时器,放入js执行的队列中,等待执行 else if (window.addEventListener...) // 将事件进行注册 window.addEventListener("load", f, false) // 注册事件 load, 当加载完成以后执行函数f, } // 设置标志,指示文档是否载入完成...,首先定义了一个函数,设置了一个加载的标志,在加载的过程中,设置loaded的值为false,当加载完成以后,执行onload函数,将其内部定义的函数传入onload中,和load事件进行绑定。

    13.1K80

    那些年前端跨过的域

    同源策略规定跨域之间的脚本是相互隔离的,一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法。所谓的 同源 指的是 协议相同,域名相同,端口相同。...www.a.com 与 news.a.com 被认为是不同的域,那么它们下面的页面能够通过 iframe 标签嵌套显示,但是无法互相通信(不能读取和调用页面内的数据与方法),这时候我们可以使用 js 设置...// http://www.a.com/www.html document.domain = 'a.com' // 设置一个测试方法给 iframe 调用 window.openMessage = function...这是因为主调用页可以修改数据页的 hash 值,但是数据页不能通过 parent.location.hash 的方式修改父页面的 hash 值(仅 IE 与 Chrome 浏览器不允许),所以只能在数据页中再加载一个代理页..., false) // http://www.b.com/b.html window.addEventListener('message', function (e) { console.log(`b:

    2K60

    如何利用postMessage窃取编辑用户的Cookie信息

    某天,当我在做某个项目的漏洞测试时,在登录的一些HTTP请求记录中,我发现了一种利用postMessage方式窃取和编辑用户Cookie的方法。...通常,对于两个不同页面的脚本,只有当执行它们的页面位于具有相同的协议(通常为https),端口号(443为https的默认值),以及主机 (两个页面的模数 Document.domain设置为相同的值)...时,这两个脚本才能相互通信。...> html"> 在上述child.html的子页面中,存在一个向主页面的消息发送,它就调用了postMessage方法,如下: window.parent.postMessage...现在,我们在主页面中来设置一个监听以接收消息: function rcv(event) { console.log(event); } window.addEventListener

    1.6K40

    5个常见的JavaScript内存错误

    脚本执行在此过程中暂停 它为不可访问的资源释放内存 它是不确定的 它不会一次检查整个内存,而是在多个周期中运行 它是不可预测的,但它会在必要时执行 这是否意味着无需担心资源和内存分配问题?当然不是。...它返回一个时间间隔ID,该ID唯一地标识时间间隔,因此您可以稍后通过调用 clearInterval() 来删除它。 我们创建一个组件,它调用一个回调函数来表示它在x个循环之后完成了。...: 当我们点击重试按钮时,可以看到分配的内存越来越多。...addEventListener 时没有清理之前的 keyup。...这个新创建的元素被添加到 elements 数组中。 下一次执行 addElement 时,该元素将从列表 div 中删除,但是它不适合进行垃圾收集,因为它存储在 elements 数组中。

    1.4K20

    看完这几道 JavaScript 面试题,让你与考官对答如流(上)

    当我们调用outerFunc函数并将返回值innerFunc函数分配给变量x时,即使我们为outerVar变量分配了新值outer-2,outerParam也继续保留outer值,因为重新分配是在调用outerFunc...之后发生的,并且当我们调用outerFunc函数时,它会在作用域链中查找outerVar的值,此时的outerVar的值将为 "outer"。...现在,当我们调用引用了innerFunc的x变量时,innerParam将具有一个inner值,因为这是我们在调用中传递的值,而globalVar变量值为guess,因为在调用x变量之前,我们将一个新值分配给...var关键字创建一个全局变量,当我们 push 一个函数时,这里返回的全局变量i。...因此,当我们在循环后在该数组中调用其中一个函数时,它会打印5,因为我们得到i的当前值为5,我们可以访问它,因为它是全局变量。 因为闭包在创建变量时会保留该变量的引用而不是其值。

    2K10

    一篇文章教你如何捕获前端错误

    常见错误的分类 对于用户在访问页面时发生的错误,主要包括以下几个类型: 1、js运行时错误 JavaScript代码在用户浏览器中执行时,由于一些边界情况、本地环境的不可控等因素,可能会存在js运行时错误...像axios和jQuery等库就是在xhr上的封装,而有些情况也可能会使用原生的fetch,因此对这两种情况都要进行捕获。 e.g: 下图是xhr请求接口返回400时捕获后的上报数据: ?...('error', event => (){ // 处理错误信息 }, false); // true代表在捕获阶段调用,false代表在冒泡阶段捕获。...当网站请求并执行一个托管在第三方域名下的脚本时,就可能遇到该错误。最常见的情形是使用 CDN 托管 JS 资源。 其实这并不是一个 JavaScript Bug。...这意味着请求脚本时不会向服务端发送潜在的用户身份信息(例如 Cookies、HTTP 证书等)。

    3.8K40

    一篇文章教你如何捕获前端错误

    e.g: 下图是xhr请求接口返回400时捕获后的上报数据: 各个类型错误的捕获方式 1、window.onerror与window.addEventListener('error')捕获js运行时错误...('error', event => (){ // 处理错误信息 }, false); // true代表在捕获阶段调用,false代表在冒泡阶段捕获。...使用true或false都可以,默认为false 2、资源加载错误使用addEventListener去监听error事件捕获 实现原理:当一项资源(如或)加载失败,加载资源的元素会触发一个...当网站请求并执行一个托管在第三方域名下的脚本时,就可能遇到该错误。最常见的情形是使用 CDN 托管 JS 资源。 其实这并不是一个 JavaScript Bug。...这意味着请求脚本时不会向服务端发送潜在的用户身份信息(例如 Cookies、HTTP 证书等)。

    3.3K90

    前端魔法堂:可能是你见过最详细的WebWorker实用指南

    以http(s)://协议加载给WebWorker线程运行的脚本时,其URL必须和UI线程所属页面的URL同源; 1.2....只要在频繁持续执行的代码中加入console对象方法的调用,加上一不小心打开Devtools工具,卡死浏览器简直不能再就简单了。这是为什么呢?...工程化——RPC类库Comlink 一般场景下我们会这样使用WebWorker, UI线程传递参数并调用运算函数; 在不影响用户界面响应的前提下等待函数返回值; 获取函数返回值继续后续代码。...——UI线程所属页面URL为本地文件时,所分配给Web Worker的脚本可为本地脚本。...其实Electron打包后读取的HTML页面、脚本等都是本地文件,如果不能分配本地脚本给Web Worker执行,那就进入死胡同了。

    1.9K30

    浅说 XSS 和 CSRF

    攻击者对客户端网页注入的恶意脚本一般包括 JavaScript,有时也会包含 HTML 和 Flash。...一般来说,除富文本的输出外,在变量输出到 HTML 页面时,可以使用编码或转义的方式来防御 XSS 攻击。例如利用 sanitize-html 对输出内容进行有规则的过滤之后再输出到页面中。...当我们去查看 Cookie 相关的属性时,不同的浏览器对会话期 Cookie 的 Expires 属性值会不一样: Firefox: ? Chrome: ?...在这个攻击过程中,攻击者借助受害者的 Cookie 骗取服务器的信任,但并不能拿到 Cookie,也看不到 Cookie 的内容。...因此,攻击者无法从返回的结果中得到任何东西,他所能做的就是给服务器发送请求,以执行请求中所描述的命令,在服务器端直接改变数据的值,而非窃取服务器中的数据。

    1.1K20

    事件高级

    DOM事件流 html中的标签都是相互嵌套的,我们可以将元素想象成一个盒子装一个盒子,document是最外面的大盒子。 当你单击一个div时,同时你也单击了div的父元素,甚至整个页面。 ​...比如:我们给页面中的一个div注册了单击事件,当你单击了div时,也就单击了body,单击了html,单击了document。 ?...当我们注册事件时,event 对象就会被系统自动创建,并依次传递给事件监听器(事件处理函数) ....只要“||”前面为false, 不管“||”后面是true 还是 false,都返回 “||” 后面的值。...事件委托的原理 不是每个子节点单独设置事件监听器,而是事件监听器设置在其父节点上,然后利用冒泡原理影响设置每个子节点。

    1.4K20
    领券