// 事件链诊断: node scripts/diag2.mjs import puppeteer from 'puppeteer-core' const EDGE = 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe' const token = process.argv[2] const browser = await puppeteer.launch({ executablePath: EDGE, headless: 'new', args: ['--window-size=1440,900', '--enable-unsafe-swiftshader', '--use-gl=angle', '--use-angle=swiftshader'], defaultViewport: { width: 1440, height: 900 }, }) const page = await browser.newPage() page.on('console', m => console.log(`[页面.${m.type()}]`, m.text().slice(0, 150))) await page.goto(`http://localhost:8000/combine?token=${encodeURIComponent(token)}`, { waitUntil: 'networkidle2' }) await page.waitForSelector('.lib-item') await page.click('.lib-item') await new Promise(r => setTimeout(r, 600)) const box = await (await page.$('.canvas-box')).boundingBox() const cx = box.x + box.width / 2, cy = box.y + box.height / 2 await page.evaluate(() => { window.__md = 0; window.__mu = 0; window.__selEvents = [] const cv = document.querySelector('.canvas-box canvas') cv.addEventListener('mousedown', () => window.__md++) cv.addEventListener('mouseup', () => window.__mu++) }) const el = await page.evaluate((x, y) => { const e = document.elementFromPoint(x, y) return e ? `${e.tagName}.${String(e.className).slice(0, 40)}` : 'null' }, cx, cy) console.log('中心点元素:', el) await page.mouse.click(cx, cy) await new Promise(r => setTimeout(r, 300)) const st = await page.evaluate(() => ({ md: window.__md, mu: window.__mu, sel: window.__ccDebug.getSelected(), units: window.__ccDebug.units(), })) console.log('事件计数+选中:', JSON.stringify({ md: st.md, mu: st.mu, sel: st.sel })) console.log('单元 uid 列表:', JSON.stringify(st.units)) await browser.close()