【发布时间】:2020-12-19 01:49:11
【问题描述】:
我在 Puppeteer 中有一个 div,它的作用就像一个假光标。我正在使用“node-puppeteer-apng”来记录鼠标移动,当生成视频时,这个假光标会显示在先前记录的移动之后。除了一件事之外,一切是否正常: 当假光标穿过菜单或模式时,它被此菜单或模式隐藏。我已经尝试更改它的 z-index,但没有成功。
这就是我将 div 放入页面的方式:
// This injects a box into the page that moves with the mouse;
// Useful for debugging
async function MouseHelper(page) {
await page.evaluateOnNewDocument(() => {
// Install mouse helper only for top-level frame.
if (window !== window.parent)
return;
window.addEventListener('DOMContentLoaded', () => {
const box = document.createElement('puppeteer-mouse-pointer');
const styleElement = document.createElement('style');
styleElement.innerHTML = `
puppeteer-mouse-pointer {
pointer-events: none;
position: absolute;
top: ${window.innerHeight/2}px;
left: ${window.innerWidth/2}px;
width: 5vw;
height: 5vw;
border-radius: 2.5vw;
margin: -10px 0 0 -10px;
padding: 0;
transition: background .2s, border-radius .2s, border-color .2s;
}
puppeteer-mouse-pointer.button-1 {
transition: none;
background-color: rgba(0,0,0,0.9) !important;
}
puppeteer-mouse-pointer.button-2 {
transition: none;
border-color: rgba(0,0,255,0.9);
}
puppeteer-mouse-pointer.button-3 {
transition: none;
border-radius: 0.1vw;
}
puppeteer-mouse-pointer.button-4 {
transition: none;
border-color: rgba(255,0,0,0.9);
}
puppeteer-mouse-pointer.button-5 {
transition: none;
border-color: rgba(0,255,0,0.9);
}`;
document.head.appendChild(styleElement);
document.body.appendChild(box);
document.addEventListener('mousedown', event => {
updateButtons(event.buttons);
box.classList.add('button-' + event.which);
}, true);
document.addEventListener('mouseup', event => {
updateButtons(event.buttons);
box.classList.remove('button-' + event.which);
}, true);
document.addEventListener('scroll', event => {
box.style.top = (window.innerHeight/2) +
document.scrollingElement.scrollTop + 'px';
updateButtons(event.buttons);
}, true);
function updateButtons(buttons) {
for (let i = 0; i < 5; i++)
box.classList.toggle('button-' + i, buttons & (1 << i));
}
}, false);
});
};
编辑:
你可以下载这个apng file并用你的浏览器打开它自己看看发生了什么
或者看看下面这两张图
【问题讨论】:
-
我忘了提到在页面中安装此帮助程序后,我正在放置光标图像和围绕它的圆圈。如果我不这样做,它就不会出现
标签: javascript html css node.js puppeteer