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

innerHTML导致事件失效bug

在用innnerHTML形式添加元素之后,事件绑定失效,如下 document.body.innerHTML += 'xxx'; 其实就是: document.body.innerHTML = (document.body.innerHTML...+ 'xxx'); 把原本元素摧毁之后重建一个加上'xxx'新元素,所以旧元素handler也被重置(又或着是说丢失)了!...body元素内容变了,DOM元素结构已经变了 那么之前通过 var oBtn=document.getElementById('btn'); 获取oBtn在当前DOM树中已经不存在了,这点我们可以通过在...document.body.innerHTML+=str; var _oBtn_=document.getElementById('btn'); console.log(oBtn.onclick);...//之前绑定事件还存在 虽然在DOM树中不存在了,但是对象还在函数体中,并没有被GC掉,所以oBtn.onclick还能正常运行 点击行为触发是基于DOM树结构中元素,故浏览器中事件也称为DOM

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

    Vue打包后Echarts图表不显示问题解决

    最近发现一奇怪问题,正常本机测试情况下,echarts图表显示没问题。但是只要打包后部署到nginx里,第一次首页加载没问题,进入其他tab页面再返回首页时,echarts图表就是显示不出来了。...监测控制台没有任何错误输出。 网上有很多说辞和办法,试过了都没有效果。最后经过不断尝试摸索,终于解决啦。...还有的怀疑打包有问题,考虑是不是 vue-cli 打包后不支持AMD 模式造成引入echart失败 。不然为什么不打包就能正常没有问题了! 第二个方向是解决define关键字 未定义错误。...还是出现第一次首页展示时可以正常显示,然而切换标签页,再返回首页就又没了。...无论怎么切换标签页,再返回首页图表仍正常显示

    2.3K20

    ASP.NET AJAX(12)__浏览器兼容功能判断浏览器类型和版本Sys.Browser针对DOM元素兼容操作针对DOM事件兼容操作

    Sys.Brower.hadDebuggerStatement:是否支持debugger命令 Sys.Brower.name:浏览器名称 Sys.Brower.version:浏览器版本 一个通过浏览器类型获得显示窗口大小示例...这里要提一下,其实Microsoft AJAX Library是没有直接提供chrome支持这里使用它进行测试,完全是因为这里只装了这三种浏览器,在chrome下,很多东西得出结果是不正确...微软提供了一套“第三种形式”DOM事件操作 提供操作 添加Event Handler:$addHandler(element,eventName,handler);//这里事件名没有“on” 添加...一个针对DOM事件兼容操作示例 创建一个asp页面,我们如果没有这个浏览器兼容层情况下,我们如果为一个按钮在javascript中为一个按钮添加一个事件, 则需要如下代码来兼容不同浏览器 <input...事件,触发这个事件,调用onMouseDown方法 <%--要显示信息

    1.1K90

    避坑指南:可能会导致.NET内存泄露8种行为

    当有一个垃圾回收器(GC)负责收集所有东西时,内存怎么会泄漏呢? 这里有两个核心原因。第一个核心原因是你对象仍被引用实际上却未被使用。...这是一个定义问题,观点是它们确实是内存泄漏。它们拥有无法分配给另一个实例内存,最终将导致内存不足异常。对于本文,我会将托管内存泄漏和非托管内存泄漏都归为内存泄漏。...如果一个操作能只做一次并且将其结果保存,那么为什么还要做两次呢? 的确如此,但是如果无限期地缓存,最终将耗尽内存。...你可以做一些事情来解决这个问题: 删除一段时间未使用缓存。 限制缓存大小。 使用WeakReference来保存缓存对象。这依赖于垃圾收集器来决定何时清除缓存,这可能不是一个坏主意。...总结 知道内存泄漏是如何发生很重要,只有这些还不够。同样重要是要认识到现有应用程序中存在内存泄漏问题,找到并修复它们。

    68810

    Google Golang Style 个人小结

    前几个月就看到 Google 有了 Golang 这个规范,但是一直没有时间去看。最近仔细看了一下,其中有几个点,之前搬砖时候还没有注意到,所以记录一下。...我们有时候会不得不出现包名需要两个单词来描述情况。在没有了解到这个规则之前,确实很多命名时候还是会选择使用下划线进行分隔来命名包名。...之前就经常会写类似方法名称就是:GetUserByID 这样,这个规则以后也要注意。...fmt.Printf("value '%s' looks like English text", someText) 这个之前没有注意到,虽然很多时候不会去手写单引号或者双引号,但是会经常去书写 [...,导致程序无法正常启动时候往往会使用 panic 来处理。

    36110

    vue核心知识点

    事件,比如点击事件和绑定事件监听器 v-modle:实现表单传输和应用状态之间双向绑定 v-pre:跳过这个元素和它子元素编译过程,可以用来显示Mustache标签,跳过大量没有指令节点会加快编译...v-once: 只渲染元素和组件一次,随后重新渲染,元素/组件及其所有子节点将被视为静态内容并跳过,这可以优化更新性能 v-if和v-show具体区别 共同点:v-if和v-show都能动态显示DOM...所以如果你用一个for循环来动态改变数据100次,其实它只会应用最后一次改变,如果没有这种机制,DOM就要重绘100次,这固然是一个很大开销。...$nextTick(function(){ var text = document.getElementById('div').innnerHTML; console.log...vue 组件中data为什么必须是函数 因为一个组件是可以共享,但是它们data是私有的,所以每个组件都要return一个新data对象,返回一个唯一对象,不要和其他组件共用一个对象 var MyComponent

    1.9K10

    接口-Fiddler-​功能介绍(二)

    sometext 在已有的sessions中,将URL中包含sometextsession项高亮。 例如:?fiddler,搜索带有fiddler关键字链接地址。...例如:hide 2.16urlreplace 自动将任意URL中内容sometext1替换为sometext2。使用这个命令后,会将之前设置策略清除。...顶部黄色提示文字表示,此请求为了提高性能,而做了编码或者压缩(例如 GZIP),需要转换后才能在TextView里正常浏览。...Unmatched requests passthrough表示允许未匹配到请求正常响应。打勾才能让其他请求继续;否则其他未匹配到请求都会以404状态返回。...www.example.com/Path1/query=example.gif 不匹配 http://www.example.com/Path1/query=example.Gif (是.gif结尾,大小写不匹配

    1.7K10

    console.log 一定会导致内存泄漏?不打开 devtools 就不会

    这个测试了一下:点击几次按钮,这时候应该调用了 console.log 打印了,然后过了 10 分钟,确保执行过 gc 了,再打开控制台,依然是可以看到那个对象详情。...这说明打印对象没有被 gc,不然怎么还可以看到详情呢? 于是得出结论,不打开 devtools 也是有内存泄漏。...因为我们看不到控制台,所以也会加到 dom 中来显示。 通过定时器不断执行这样操作。...那如果先打开 devtools,然后再关掉呢? 可以看到,只要关闭了 devtools,内存就稳定了。之前打印对象依然被引用着,那部分内存不会被释放。...我们直接打印字符串试一下: 可以看到,内存也是平稳为什么呢?字符串不也是对象、可以看到详情吗? 这是因为字符串比较特殊,有个叫做常量池东西。

    1.1K30

    document.getElementById 学习总结「建议收藏」

    计划是:在页面加载时,在文本框中显示由后台处理来数据,比如这里字符串 “hello, my friend!”。...至于为什么undefined,调试了很久都没找出原因,后来无意中尝试把value改成 innerHTML,居然打印出了一些结果,不过仔细一看才知道打印出是一个同id名div中内容,这下...(id); } 有没有人想过为什么要这么写,而不用下面的方式写呢?...如果将document.getElementById 执行环境换成了document而非window,则可以正常使用$了。...新统一标准用document.getElementById等系列方法来引用DOM对象,而且Netscape 6.0以后放弃了 layers特征,虽然IE继续保留了document.all,这最终没有成为

    2.3K10

    深入理解JavaScript与DOM

    例如,Firefox浏览器使用Gecko引擎有着很好实现(尽管没有完全遵守W3C规范),IE浏览器使用Trident引擎实现却不完整而且还有bug,给开发人言带来了很多问题。...如果你正在使用Firefox,推荐你立即下载Firebug插件,对于你了解DOM结构非常有用。...,了解这些原理依然很重要,这里有一个使用DOM方法更详细例子: var myIntro = document.getElementById('intro'); // 添加新连接到文本节点 //...基本事件注册是非常简单,在事件名称前面添加前缀on作为DOM属性就可以使用了,这是事件处理基本核心,下面的代码不推荐使用: <button onclick="return buttonClick...Event对象 另外一个非常重要<em>的</em>内容是Event对象,当事件发生<em>的</em>时候出发某个函数,该Event对象将自动在函数内可用,该对象包含了很多事件触发时候<em>的</em>信息,<em>但</em>IE却<em>没有</em>这么实现,而是自己实现<em>的</em>,IE浏览器是通过全局对象

    65030

    利用 leanCloud 实现点赞功能

    因为要做是页面点赞功能,所以可能会比 do you like me 那个稍稍多个步骤。...=undefined){ //.. } 其他 以上代码写入 SDK 初始化后运行就可以正常获取不同页面的点赞次数了,数据创建后会在 leancloud 控制台显示,如下 其实拿到信息还可以通过点赞数量创建热门文章...获取不到 class 404 出现这个问题根本在构造对象完成后,没有进行数据储存操作,导致 SDK 没有自动创建我们指定 class。...解决方案很简单,在控制台手动创建一个同名称 class 或在完成构造对象后发起一个储存请求,该请求会自动创建 class 推荐第一种方案,因为现在也还没解决这个问题/笑哭 获取不到 class 错误数据写入类型...400 这个问题困扰了好久,因为正常写入 String 类型都是可以,当我把 num 以 Number 类型写入就会报错写入失败,找半天没找到原因最后发现原来是创建 class 之后第一次储存类型会一直保留

    13110

    前端跳槽突围课:React18底层源码深入剖析

    三、React 为什么需要并发我们都知道,js是单线程语言,同一时间只能执行一件事情。这样就会导致一个问题,如果有一个耗时任务占据了线程,那么后续执行内容都会被阻塞。...} } window.onload = function () { render() } 当我们点击按钮时,由于render函数一直在执行,所以handle回调迟迟没有执行...,如果你看到这个非常简单(丑陋)页面显示出来,那证明项目已经可以正常运行起来了我们可以将react更新看作一个任务,click事件看作一个任务。...虽然很困难,React18确实做到了这一点:Concurrency is not a feature, per se....五、客户端渲染 API 更新 当你第一次安装 React 18 时候,控制台会出现如下警告:ReactDOM.render is no longer supported in React 18.

    35710

    Valine 实现评论“撤回”重新编辑

    ,不过捣鼓半天没看懂这玩意咋能套进 Valine 实现保存数据前修改再保存,所以放弃了这个思路,转而像更简单粗暴“数据更新”方法。...del() : false; //删除逻辑 }; 问题修复 以上代码是已经可以实现重复编辑和撤销评论逻辑了,不过这时候发现更新数据提交后没有响应,打开控制台才发现报了 400 错误,一看是有关于 ACL...1), e } 两个读写权限设置,这一看报错就是因为没有权限写入更新数据,去 leancloud 控制台一看,果不其然 安全考虑都是可读不可写 然后在 官方 ACL 文档 里找到了一些设置权限方法...页面没有评论时第一次在页面评论不会刷出评论数量(刷新后又好了)不知道是哪里出问题了,因为有很大量备份索性回滚,无果。...后期有时间好好排查下什么情况引起,改东西太多就容易出错,还不容易察觉,就是这么蛋疼.. 已知 bug 取消回复后,没有清除已@到的人 重新编辑提交后,没有@到人 以上,有问题评论区留言。

    14310

    在线 PHP运行工具实现思路及源码

    背景 不知道大家有没有看到过这样一个网站。名字是“菜鸟工具”,里面有很多在线编辑,在线运行小工具,实用也很方便。(嘻嘻,不是打广告哈,不过确实很实用)。...image.png 作为一个PHP菜鸟,如果能有一个好用,随时随地练习语法工具该有多好啊。很明显,上面的那个PHP在线工具,基本上已经可以满足正常需求了。...而事实上,就是这么干,结果也证明,顺序得当的话,还是挺不错。...想法就是: 给个按钮,点击按钮时候首先会把源代码发送到服务器上,接下来调用一个ajax请求,把源代码运行结果取出来,显示到“控制台”上。 制作 下面将介绍具体实现流程。...这样也算是能够随时随地拥有一个可以正常使用在线PHP环境了。

    2.5K20
    领券