我们正在实现视频通话应用程序。用户应该能够使用鼠标在视频上绘制,当鼠标进入远程视频时,我们需要在视频上显示一个按钮(当用户单击按钮时断开呼叫),当鼠标退出视频时,需要删除该按钮。
为此,我们在javascript中动态创建以下元素
订单是这样的。视频-
鼠标进入画布时显示按钮,鼠标离开画布时删除按钮工作正常。但是我面临以下问题。
下面是代码。
remoteVideo = document.createElement('video');
remoteVideo.setAttribute("id", "remoteVideo");
remoteVideos.appendChild(remoteVideo);
localCanvas = document.createElement('canvas');
localCanvas.setAttribute("id", "localCanvas");
remoteVideos.appendChild(localCanvas);
$("#remoteVideo").on("loadedmetadata", () => {
const remoteVideoEle = document.getElementById('remoteVideo');
const localCanvasEle = document.getElementById('localCanvas');
localCanvasEle.setAttribute('width', remoteVideoEle.offsetWidth);
localCanvasEle.setAttribute('height', remoteVideoEle.offsetHeight);
localCanvasEle.style.position = 'absolute';
localCanvasEle.style.background = 'transparent';
$('#localCanvas').on('mouseenter', (e) => {
// DISPLAYING BUTTON HERE
if(termBtn === undefined) {
termBtn = document.createElement('button');
termBtn.style.left = localCanvas.getBoundingClientRect().x + (localCanvas.getBoundingClientRect().width / 2) - 25 + 'px';
termBtn.style.top = localCanvas.getBoundingClientRect().y + localCanvas.getBoundingClientRect().height - 65 + 'px';
termBtn.classList.add("terminate_session_btn");
remoteVideos.appendChild(termBtn);
} else {
$(".terminate_session_btn").show();
}
});
$('#localCanvas').on('mouseleave', (e) => {
console.log("mouse exited remote video");
$(".terminate_session_btn").remove();
termBtn = undefined;
});
});
我不想在鼠标位于按钮上方时为画布生成mouseenter和mouseleave事件(从技术上讲,画布的一部分就在按钮下方,因此不应触发这些事件),因为绘图功能取决于画布的mouseleave事件。
有人能帮助我如何防止鼠标进入/离开事件被触发时,鼠标进入按钮。
正在添加
'pointer-events: none;'
到按钮实现了描述的行为,但是当我单击按钮时,单击事件没有被触发。
添加“指针事件:无;”按按钮解决了问题。但当我单击按钮时,没有触发click事件。
您不一定需要避免触发这些事件。您可以为鼠标输入使用标志:
$('#localCanvas').on('mouseenter', (e) => {
if (!buttonHovered) {
//Your code
}
buttonHovered = false;
canvasHovered = true;
});
当然,您需要用false初始化这些标志。“悬停在”按钮应将“按钮悬停在”设置为“真”。现在,如果画布周围有一个标记,则可以为其周围的标记定义一个鼠标指针,并在开始时检查画布悬停的值,然后在结束时将画布悬停的值设置为false。
问题内容: 我创建了一个框架,然后创建了一个画布。 接下来,我要在画布上添加一个按钮。 但是,当我打包按钮时,我看不到画布! 这是我尝试过的: 问题答案: Tkinter管理器会尝试将父窗口小部件的大小调整为正确的大小,以包含其子窗口小部件,并且默认情况下不会更大。画布就在其中- 但它与按钮的尺寸完全相同,因此是不可见的。 如果要在画布上放置小部件 而不 导致画布动态调整大小,则需要以下功能: 这
问题内容: 这是我想做的事情:单击页面上的一个按钮,这又使(2)事情发生: 显示一个ModalPopup,以防止用户按下任何按钮或更改值 在方法后面调用我的代码,完成后隐藏ModalPopup 这是ASP标记: 现在,这是我在C#代码后面的代码: 为什么不起作用?ModalPopup可以完美显示,但是btnSaveData_Click事件从不触发。 更新: 第一个建议对我不起作用。我还尝试了您的第
点击“完成签字并保存”按钮判断canvas画布是否已绘制,如果没绘制的话禁用按钮
问题内容: 我想将要制作的游戏按钮制作为真正的HTML按钮,但它们必须位于画布内。 我将如何去做呢? 问题答案: 鉴于canvas元素具有透明的内容模型,它可能包含 后备 元素,如果该元素不受支持,则会显示该元素。如果支持画布, 则 不会 显示它们。 __ 您可以相对于画布的父对象放置HTML元素,以使按钮“悬停”在画布上。甲菜单元件可以是适当的语义元素来呈现的控件的列表,这取决于上下文: HTM
问题内容: 我正在尝试用鼠标在HTML5画布上绘制,但是似乎正常工作的唯一方法是,如果出于某种原因,如果我更改了画布位置,那么画布是否位于0,0(左上角)的位置它的绘制效果不理想。这是我的代码。 HTML部分 我已经读过一种方法可以在JavaScript中创建一个简单的函数来获得正确的位置,但是我不知道该怎么做。 问题答案: 简单的1:1方案 对于canvas元素与位图大小相比为1:1的情况,可以
问题内容: 我创建了一个带有始终可见的上一个和下一个按钮的轮播。这些按钮处于悬停状态,它们变为蓝色。在诸如iPad的触摸设备上,悬停状态为粘滞状态,因此在点击它后按钮保持蓝色。我不要 我可以为每个按钮添加一个类,并使我的CSS像这样:但这可能会降低性能,并且不能正确处理Chromebook Pixel(具有触摸屏和鼠标)之类的设备。 我可以向中添加一个类,并使CSS像这样:但是,这在同时带有触摸和