我最近在笔记本电脑上试用了Vivaldi浏览器,以运行一些自建的THREE.js应用程序。该应用程序在Vivaldi上的运行速度比我通常使用的Opera或Firefox快得多。
但是我发现了一个问题。使用Orbit Controls并尝试使用鼠标右键单击并拖动时移动(平移)摄影机视点时。在Opera和Firefox中可以正常工作。但是在Vivaldi中,向左或向右拖动有时会导致浏览器移至上一页或下一页。在调试器中,我收到一条消息“在被动事件侦听器调用中无法阻止Default”。
我最初的addEventListener初始化代码是这样的:-
document.addEventListener( 'touchstart', onDocumentTouchStart,false );
document.addEventListener( 'touchmove', onDocumentTouchMove, false );
document.addEventListener( 'mousemove', onDocumentMouseMove, false );
window.addEventListener ( 'resize', onWindowResize, false );
相关的调用代码如下:-
//... Allows OrbitControls to do drag origin by preventing default reaction (prev/next page)
function onDocumentTouchStart( event ) {
if ( event.touches.length === 1 ) {
event.preventDefault();
mouseX = event.touches[ 0 ].pageX - windowHalfX;
mouseY = event.touches[ 0 ].pageY - windowHalfY;
}
}
//... Allows OrbitControls to do drag origin by preventing default reaction (prev/next page)
function onDocumentTouchMove( event ) {
if ( event.touches.length === 1 ) {
event.preventDefault();
mouseX = event.touches[ 0 ].pageX - windowHalfX;
mouseY = event.touches[ 0 ].pageY - windowHalfY;
}
}
我点击了提供给https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener的链接,并将初始化代码更改为以下内容:-
var passiveSupported = false;
try
{
var options = {
get passive() { // This function will be called when the browser
// attempts to access the passive property.
passiveSupported = true;
}
};
window.addEventListener("test", options, options);
window.removeEventListener("test", options, options);
}
catch(err)
{
passiveSupported = false;
}
//MY MODIFIED STUFF
document.addEventListener( 'touchstart', onDocumentTouchStart, passiveSupported
? { passive: true } : false);
document.addEventListener( 'touchmove', onDocumentTouchMove, passiveSupported
? { passive: true } : false);
document.addEventListener( 'mousemove', onDocumentMouseMove, options );
window.addEventListener ( 'resize', onWindowResize, options );
现在,维瓦尔第报告说,passiveSupported = true,但是错误消息和问题仍然存在。
如果有人想了解一下这里发生的事情,我将不胜感激,因为我想使用Vivaldi,但此页面跳转问题使我的某些应用无法使用。