Javascript 仅在Google Chrome上隐藏元素
我有个问题 ,我想只向不使用Chrome的用户显示一个通知(例如,人们使用Google Chrome)。我认为在Javascript上应该是这样的:Javascript 仅在Google Chrome上隐藏元素,javascript,google-chrome,google-chrome-devtools,Javascript,Google Chrome,Google Chrome Devtools,我有个问题 ,我想只向不使用Chrome的用户显示一个通知(例如,人们使用Google Chrome)。我认为在Javascript上应该是这样的: var isChrome = navigator.userAgent.indexOf("Chrome/") > -1; if (isChrome) { document.getElementById('notification').style.display = 'none'; } 但当我这么做时,我(在Google Developer
var isChrome = navigator.userAgent.indexOf("Chrome/") > -1;
if (isChrome) {
document.getElementById('notification').style.display = 'none';
}
但当我这么做时,我(在Google Developer Inspector:JS控制台)出现了一个错误,上面说:
未捕获的TypeError:无法读取null的属性“style”
那么我做错了什么
提前谢谢
警察局。对不起,我会说一点英语 元素
通知似乎不存在。您可能试图在将整个HTML读入DOM之前运行该代码。将其注册为“load”或“ready”事件的事件处理程序。(最好的方法取决于您使用的是Javascript框架还是纯JS。)表示document.getElementById('notification')
为空,因此在页面上呈现元素之前调用它
需要在元素、文档准备就绪或窗口加载后添加
Eric加载文档后,您是否检查此项?如果在之前检查,它将为null,因为它还不是dom的一部分。我如何检查它?我的网站是如果(isChrome=true)
相当于:isChrome=true;如果(isChrome)
。已更正,但我仍然得到相同的错误。正确。也许它与@JeremySpouken comment有关,脚本可能在加载时执行,而他正在寻找的元素还不存在。document.ready()应该怎么做?你能给我举个例子吗?拜托,最简单的方法是以一种与几乎所有浏览器都兼容的方式来做,就是window.onload=function(){your code here}
,但缺点是你只能在整个站点上使用一个这样的事件处理程序,并且只有当页面上的所有内容都加载完毕后,事件才会触发。以兼容的方式修复这两个问题是一个恼人的功能检测代码块,我无法从内存中编写,因为通常最好使用像jQuery这样的库,它已经有了一个有效的实现。谢谢!我懂一点,但如果你能简单地解释一下,我将不胜感激,因为我只懂一点英语。它解决了,但项目在元素加载后不久就消失了。。。我能做什么?在这一点上,我的建议是使用一个JS库和一个可移植的实现来注册“ready”事件并用它注册处理程序。似乎有一个单独提供此功能:非常感谢!我通过集成上面的代码和显示通知的js解决了这个问题!再次感谢。从秘鲁回来!