我使用的是一个找到的代码,其中使用了“事件”。它的工作,但我想知道应该使用什么。
我是一个新手程序员,有一个概念,我错过了。在这种情况下,我使用的代码,我发现在网络上,可以在下一个链接中找到:https://codepen.io/galulex/pen/eNZRVq
phpStorm告诉我onmousemove=“zoom(event)”上的“event”已经过时了。我试过删除它,但是它不起作用。我想知道我应该用什么来代替event。
<figure class="zoom" onmousemove="zoom(event)" style="background-image: url(//res.cloudinary.com/active-bridge/image/upload/slide1.jpg)">
<img src="//res.cloudinary.com/active-bridge/image/upload/slide1.jpg" />
</figure>
function zoom(e){
var zoomer = e.currentTarget;
e.offsetX ? offsetX = e.offsetX : offsetX = e.touches[0].pageX
e.offsetY ? offsetY = e.offsetY : offsetX = e.touches[0].pageX
x = offsetX/zoomer.offsetWidth*100
y = offsetY/zoomer.offsetHeight*100
zoomer.style.backgroundPosition = x + '% ' + y + '%';
}
4条答案
按热度按时间9bfwbjaz1#
全局对象的
event
属性(在Web浏览器中通常为window
)最初是由Microsoft在Internet Explorer中添加的。正如经常发生的那样,它随后逐渐进入其他流行的Web浏览器,并成为另一个事实上的“标准”,而当时没有被W3C或类似的权威机构正式指定。最终,WHATWG以向后兼容的名义追溯性地指定了它,将其定义为“当前”事件,并附上警告说明:
强烈建议Web开发人员改为依赖于传递给事件侦听器的Event对象,因为这将导致更可移植的代码。此属性在工作进程或工作小程序中不可用,并且对于在影子树中调度的事件不准确。
因此,对于您的用例所属的大类问题,惯用的解决方案是在元素或其祖先上附加一个事件侦听器(通常使用
addEventListener
函数),并使用显式传递给侦听器的事件对象。在您的特定情况下,假设下面的
figure
引用了您的figure
元素,则事件侦听器(zoom
)可以这样附加:由于
zoom
函数已经假设传递给它的单个参数是鼠标移动事件,因此它将继续作为事件侦听器工作,而不需要更改-每次鼠标移动时,它将使用感兴趣的事件作为唯一参数进行调用。sc4hvdpw2#
我得到这个错误的VS代码,而使用它这样
使用以下代码解决了警告
原因-事件处理函数中缺少event参数,最终使用了global window.event,该函数脆弱且已弃用。
webghufk3#
你也可以这样做(在react中),
gpnt7bae4#
我也有同样的问题。我发现这个code对我很有效,就像以前的事件一样。