在javascript中使用.replacement()函数时,请避免取消挂起事件处理程序
Avoid unhooking Eventhandlers when using .replace() function in javascript
我需要将网站正文中"®"的所有实例替换为"<sup>®<sup>"。但是,如果我使用replace函数,那么所有附加的事件处理程序都会被取消挂起。我该如何避免这种情况?
jsFiddle
document.body.innerHTML = document.body.innerHTML.replace(/'u00AE/, '<sup>®</sup>')
我怀疑您将整个文档替换为innerHTML以更改®的每个实例。这将导致文档中包含的所有HTML元素被销毁,并创建一组全新的HTML元素。这就是事件处理程序解除挂起的原因。
要做到这一点而不丢失事件处理程序,您必须迭代每个元素(或者至少迭代可能包含®的每个元素),并且只有在它包含®的情况下才替换它的innerHTML。但如果星座不幸的话,即使这样也可能会杀死一些事件处理人员。
另一种解决方案可能是为®使用另一种字体。使用web字体,可以加载只包含特定字符的字体。这样,您就可以将®使用的字体替换为已经显示为上标的字体。
相关文章:
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 按键处理程序取消事件
- 元素单击处理程序由一个神秘的函数取消设置
- 引导程序3-下拉菜单项中的取消按钮
- 如何在点击链接后从用户取消对话框中获得回调以选择移动应用程序
- 根据文件类型取消绑定和重新绑定click事件处理程序
- 如何从facebook webhook广告的页面中取消订阅应用程序
- 在javascript中使用.replacement()函数时,请避免取消挂起事件处理程序
- 正在取消绑定jQuery事件处理程序
- 是避免IE内存泄漏所需的取消挂起事件处理程序
- 选中/取消选中所有子复选框 jquery 引导程序
- 节点 JS 取消处理程序错误事件
- 单击事件执行单击和悬停事件处理程序,即使单击事件处理程序取消绑定所有处理程序也是如此
- 引导程序使用 js 检查/取消选中多个元素
- 使用 ajax 加载的页面绑定和取消绑定事件处理程序
- “用户取消了身份验证”时,从Chrome扩展程序使用AuthWithOAuthPopup
- 当 2 个或更多相同时,是否可以在 jQuery 中取消绑定特定的事件处理程序
- 取消 ajax 请求:处理程序是否仍可执行
- 捕获 Java 小程序取消按钮
- 如何在chrome扩展程序中静默取消webRequest