javascript with()函数获胜'我不适合歌剧、Chrome或Brave

javascript with() function won't work in Opera, Chrome or Brave

本文关键字:不适合 Chrome Brave with 函数 获胜 javascript      更新时间:2024-04-27

我继承了一个使用js-win()函数的HTML表单:

with (document.images.myImage.style) {
    left = x + "px";
    top  = y + "px";
    visibility = "visible";     
}

此代码根据左侧/顶部设置在图形上"移动"图像。

移动在Firefox、IE和Edge中是正常的,但在其他浏览器中则不然。。。我对js不够熟悉,无法重新编码,所以它适用于所有浏览器。

有人对如何重新编码有建议吗?

with是一个语句,类似于for循环,而不是函数。with允许您引用对象的属性,而无需每次都键入对象名称。

with(myObj) {
  x = y;
}

与相同

myObj.x = myObj.y;

但它在严格模式下是不允许的,也不应该在非严格模式下使用(这往往是很多错误的来源)。因此,要翻译任何with代码,只需将来自对象的任何值加上实际对象的前缀即可。

document.images.myImage.style.left = x + 'px';
document.images.myImage.style.top = y + 'px';
document.images.myImage.style.visibility = 'visible';

with(expression)expression添加到with语句内的块的作用域搜索链中。

我能想到的最直接的替代方法是给document.images.myImage.style分配一个变量,并在每一行前面加上它。所以…

var style = document.images.myImage.style; 
style.left = x + "px"; 
style.top = y + "px"; 
style.visibility = "visible"; 

感谢您提供的所有信息。

我最终做的是按照"Mike C"的建议,用"document.images.style.xxx="语句替换了with()语句。

到目前为止,它在我能找到的所有浏览器中都能找到。

同样,这个论坛在让你了解别人所知道/已经发现的方面令人惊叹。。。再次感谢你的帮助。