|
如果公式里面有文字(mtext)或者链接(mathjax的\href指令,转换为MathML后变成一个mrow的href属性)的话,选择文字/点击链接以后会误触那个点击复制.这时我们需要stop event propogation(阻止事件的进一步传播),链接中举的例子是两个按钮重叠,如果点击内部按钮(child)触发了事件,阻止事件的进一步传播,从而不会触发外部按钮(parent)的事件.
在MathJax的config中加上
- pageReady() {
- return MathJax.startup.defaultPageReady().then(function () {
- document.querySelectorAll('math mtext, math *[href]').forEach(e=>e.addEventListener('click',ev=>{ev.stopPropagation();}))
- })
- }
复制代码 即可.
如果是chtml就加上mjx-前缀,变成
- pageReady() {
- return MathJax.startup.defaultPageReady().then(function () {
- document.querySelectorAll('mjx-math mjx-mtext, mjx-math *[href]').forEach(e=>e.addEventListener('click',ev=>{ev.stopPropagation();}))
- })
- }
复制代码
JS event.currentTarget( ) 和 event.target( ) 的区别
这两个方法都是监听事件触发的目标。区别是,event.currentTarget( ) 会返回当前触发事件的元素;而event.target( ) 会返回触发事件触发的源头元素。
用法:可以用来监听触发事件的元素是否事件发生的源头元素。这个源头元素指的是,当我点击子元素,虽然父元素的点击事件也会被触发(冒泡机制),但子元素才是事件的源头元素。 |
|