当前位置: 首页 > 知识库问答 >
问题:

基于Chromium浏览器中奇怪的JavaScript错误

邓阳嘉
2023-03-14

作为一个学校练习,我尝试使用Javascript增加按钮的宽度。

这是我的代码:

const button = document.querySelector("button");

button.addEventListener("click", () => {
  console.log(button.offsetWidth);
  button.style.width = button.offsetWidth + 1 + "px";
});
<button>Press me!</button>

出于某种原因,单击3次后宽度停止增加。这只发生在基于Chrome的浏览器中(Chrome、Edge、Brave)。更奇怪的是,代码在我的另一台运行完全相同版本的Chrome和Edge的笔记本电脑上运行良好。在Firefox和IE9中,它也可以正常工作。我试着清理我的缓存,甚至安装了一个新的浏览器(Vivaldi),它也有同样的问题。我正在运行Windows 10版本1909 build 18363.1256。对于Chrome,我的版本是87.0.4280.88,Brave是87.0.664.66,Edge是87.0.664.66。

共有1个答案

邵赞
2023-03-14

使用函数getBoundingClientRect()修复了该问题。

js lang-js prettyprint-override">const button = document.querySelector("button");

button.addEventListener("click", () => {
  console.log(button.getBoundingClientRect().width);
  button.style.width = button.getBoundingClientRect().width + 1 + "px";
});
<button>Press me!</button>
 类似资料:
  • 我有一个Chrome扩展,我目前正在写一个网站来宣传它。我知道一个Chrome扩展可以安装在所有基于Chromium的浏览器(Chrome、Opera等)中。 是否可以检查浏览器是否可以从网络商店下载扩展,或者是否基于chromium? 我在这里找到了检测是否是谷歌Chrome的代码。如果我错了,请纠正我,但是我认为不会在所有基于Chromium的浏览器中返回。

  • 问题内容: 在Selenium选项(在Firefox上)中,我可以找到 。 是否可以使用此选项在 Chromium浏览器 (而非Chrome)中运行Selenium测试? 问题答案: 是。用于镀铬 您可以使用的其他选项是 custom, chrome(注意:这不是Google chrome,仅适用于Firefox模式), googlechrome, iexplore。请查看硒文档以获取模式的完整列

  • 我正在尝试在windows 8上启动带有selenium python的chromium浏览器。 添加了作为Chroum二进制位置,这是appdata。但ChromeDrive仍然开始使用谷歌chrome而不是Chrome。 如果我卸载google chrome,chromedriver默认启动chrome。但安装了chrome之后,它总是会发布chrome。 有人知道如何在安装铬时用硒启动铬吗?

  • 在基于Chromium的浏览器中(我使用的是brave),

  • 我正在研究SAML和SSO,看起来使用SAML的应用程序需要是一个web应用程序,并且依赖于浏览器。 有人能告诉我为什么吗? 我对SAML的有限知识告诉我,SAML依赖于会话和cookie,这在桌面应用程序或移动应用程序中是不可用的。这是唯一的原因吗?你能告诉我更多的细节吗?

  • 今天,我在Microsoft的Edge浏览器中发现了一些非常奇怪的行为,其中事件的值显然是反向的!这特别令人惊讶,因为这与我测试过的所有其他浏览器都不一致,包括返回预期值的Internet Explorer11。 我制作了一些GIF视频来展示这个问题,也链接了文件大小。 IE11 边缘 为什么会这样,有没有解决办法来处理浏览器兼容性问题?有没有一种方法来检测这一点?这种行为是bug,还是在某处有记