如何撤销浏览器注入JS代码的执行效果?

如何撤销浏览器注入JS代码的执行效果?

可用的方法:

  • 放弃所有本地修改,整体重新reload当前的URL(这相当于大粒度的savepoint/snapshot,应确保用户数据/视图状态能够按期望恢复)
  • 内核实现immutable的DOM树,对DOM树的每个修改均产生一个新的版本快照,修改可以直接回退,比如提供一个document.revertTo方法
    • immutable数据结构上实现MVCC事务,事务本身的执行是原子的,但是并没有考虑用户如何手工反转事务
  • 实现细粒度的对应每个业务逻辑层次写操作的Undo列表,则撤销只需反向挨个执行这些Undo即可
    • 一般像WORD这种客户端软件的Undo/Redo就是这么实现的
时间: 2024-12-17 10:39:29

如何撤销浏览器注入JS代码的执行效果?的相关文章

js_ 预解析(js代码如何执行的)

1.要理解js代码是如何执行的 js代码是由  浏览器的 js解析引擎  来执行的,js代码执行(从上往下)之前要先预解析 js代码执行  :  同步.异步   (异步要等同步代码都执行完后再执行:异步的代码放在栈中等待同步代码从上往下全部执行完成之后再执行) 预解析  :作用 注意:定义函数中的 用函数表达式方式里只存在变量名提升,没有匿名函数提升 1.变量提升 2.函数提升 案例1: 案例2: 案例3: 原文地址:https://www.cnblogs.com/yangyutian/p/10

如何用浏览器调试js代码

按F12打开调试工具 2.  点击控制台,在空白处填写js代码,然后回车运行,如图: 3. 点击调试器 在你要调试的那段js代码上点插入断点 4.  在页面上操作 5.  按F11进行逐步调试 6.  在调试过程中如遇到错误,它会跳出调试,并提示错误信息,可以返回控制台查看 这样你就可以根据提示的错误修改代码

chrome浏览器调试JS代码

是怎么调试 JavaScript 程序的?最原始的方法是用 alert() 在页面上打印内容,稍微改进一点的方法是用 console.log() 在 JavaScript 控制台上输出内容.嗯~,用这两种土办法确实解决了很多小型 JavaScript 脚本的调试问题.不过放着 Chrome 中功能越发强大的开发者工具不用实在太可惜了.本文主要介绍其中的 JavaScript 断点设置和调试功能,也就是其中的 Sources Panel(以前叫 Scripts).如果你精通 Eclipse 中的各

第一篇技术博文:区分ie和其他浏览器的js代码和html代码规范

我在博客园辟了一块菜地,记录我工作遇到的点点滴滴. 处女作贡献给IE吧. js 区分ie与其他浏览器 /*@cc_on @if(@_jscript) alert('只有ie才看见') @else*/ alert('只有ie看不见'); /*@end @*/ html区分ie与其他浏览器(x为ie版本) <!--[if lte IE x]> <html>....</html> <![endif]-->

window.close(); 关闭浏览器窗口js代码的分析总结

序号 关闭代码 需要确认 无任何作用 无需确认 1 window.close() IE7 firefox,chrome,safari Opera 2 window.opener=null;window.open('','_self');window.close();   firefox IE7,Opera,chrome,safari 3 window.open('','_self');window.close();   firefox IE7,Opera,chrome,safari 4 wind

js代码实现放大镜效果

每当打开淘宝,天猫等pc端时,看到心仪的物品时,点击图片时,便呈现出放大的效果.在没有去理解分析它的原理时,感觉非常的神奇,当真正地去接触,也是非常好理解.如下图展示所见: 很是常见,在此记载一下,毕竟好记性不如烂笔头. 主要事件: onmouseout onmouseover onmousemove 这种实现也是比较简单的,代码如下所示: 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="UTF-

js代码实现购物车效果

页面分上下两部分,上部分是所有的数据,下部分是购物车.通过在上面选择需要处理的数据添加进到购物车,实现对购物车数据的统一处理. 需要注意的有两点:①购物车数据可删除,且不能重复添加 ②响应时间考虑,购物车单次处理数据最多限制为200条 代码如下: /** *添加进购物车方法 */ function addToDownGrid(){ var selRows = $("#basicInfoList").datagrid("getChecked");//选择的用户面积 i

js函数的执行环境

js的函数本质上是一种对象,是对象就会有自己的环境(作用域),看下面的例子 var var1 = { message: "var1", getMessage: function () { alert(this.message); } }; var var2 = { message: "var2", getMessage:var1.getVar1 }; var2.getMessage(); 这段代码会输出 "var2".不对啊,应该是输出"

试着讲清楚:js代码运行机制

一. js运行机制 js执行引擎 经常看文章的说到js是带线程的,其实这个说法非常的模糊,准确的是js执行引擎是单线程的,js执行引擎就是js代码的执行器,有了这个概念就可以下来说说js是如何运行的了. js代码如何运行? 在js代码执行的时候,js的代码是按照顺序执行的,从上到下,这个时候是同步的,不过,有几个例外: 异步的网络请求 事件绑定.事件监听器 时间触发函数 我们模拟一下,js引擎遇到这三类代码的情况: js执行的好好的,正在顺序执行代码,这个时候呢,遇到了异步的网络请求的代码,这个