JSFiddle - React, Tailwind, and code Playground

HTML

<div style="width:100%; height:100%; position:absolute; background: red" onmousemove="alert('xss')">
	<a href="javascript:alert(/xss/)">Click Me</a>
</div>

JavaScript

var mCheckMap = {};
var mCheckID = 0;

function hookEvent(eventName, eventID) {
    var isClick = (eventName == 'onclick');
    
    function scanElement(el) {
        //
        // 跳过已扫描的事件
        //
        var flag = el['_k'];
        if (!flag) {
            flag = el['_k'] = ++mCheckID;
        }
        
        var hash = (flag << 8) | eventID;
        if (hash in mCheckMap) {
            return;
        }
        mCheckMap[hash] = true;
        
        // 非元素节点
        if (el.nodeType != Node.ELEMENT_NODE) {
            return;
        }
        
        // 扫描内联代码
        var code;
        if (el[eventName]) {
            code = el.getAttribute(eventName);
            if (code && /xss/.test(code)) {
                el[eventName] = null;
                alert('拦截可疑事件:' + code);
            }
        }
        
        // 扫描 <a href="javascript:"> 的脚本
        if (isClick && el.tagName == 'A' && el.protocol == 'javascript:') {
            var code = el.href.substr(11);
            if (/xss/.test(code)) {
                el.href = 'javascript:void(0)';
                alert('拦截可疑事件:' + code);
            }
        }
        
        // 扫描上级元素
        scanElement(el.parentNode);
    }
    
    document.addEventListener(eventName.substr(2), function(e) {
        scanElement(e.target);
    }, true);
}

var i = 0;
for (var k in document) {
    if (/^on./.test(k)) {
        hookEvent(k, i++);
    }
}