首页 \ 问答 \ 检查浏览器是否支持`.textContent`的最佳方法?(Best way to check if browser supports `.textContent`?)

检查浏览器是否支持`.textContent`的最佳方法?(Best way to check if browser supports `.textContent`?)



  1. if( document.body.textContent ) { }
  2. if( document.createElement('div').textContent !== void(0) ) { }


那么,我应该选择哪一个? 还是有更好的选择?

编辑 :我创建了一个jsperf

I want to check if the browser supports .textContent

I have thought these options:

  1. if( document.body.textContent ) { }
  2. if( document.createElement('div').textContent !== void(0) ) { }

Of course, the first one is simpler, but the problem I see is that maybe the browser calculates all the string, which can be slow if the website is huge.

Then, which one should I choose? Or is there a better option?

Edit: I have created a jsperf

更新时间:2019-07-04 03:12



'textContent' in document.body




'textContent' in document.body

... expression you'll just check a property (textContent) existence in document.body object, without actually checking its value.

And yes, it is false in IE8.




如何可靠地确定浏览器是否支持鼠标悬停事件?(How can I reliably determine if a browser supports mouse-over events?)

您可以做出与检测键盘或触摸输入的解决方案相反的结果。 只需等待一个实际的触摸事件或鼠标移动事件,并根据此决定。 如果您检查事件处理程序的存在,则即使浏览器当前没有在支持该事件的硬件上运行,浏览器也可能会指出它有事件,因此唯一可靠的方法是等待并查看哪些实际事件触发。 You could do the opposite of the solution for detecting keyboard or touch input. Just wait for an actual touch event o ...

聪明的方式来管理浏览器的历史(Clever way to manage browser history)

有一个“hashchange”事件,它将在HTML5中实现。 我不确定现在有多好的支持...... IE8支持它,我认为Mozilla在最近的版本中有自己的实现。 除此之外,我不害怕。 检查exery x ms是每个人都这样做的方式。 There is the "hashchange" event, which is to be implemented in HTML5. I'm not sure how good support is now... IE8 supports it, and I ...

确定浏览器是否支持打印(Determine whether browser supports printing)

不幸的是它看起来像一个没有。 window.print()函数不是EMCAScript规范的一部分。 这意味着它不需要成为JavaScript语言的一部分,也没有适合它的实现的文档。 这是未定义的行为,因此对它进行测试看起来非常困难。 资料来源: https://developer.mozilla.org/en/DOM/window.print http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf 编辑: ...

检查浏览器是否处于全屏状态[重复](Checking if browser is in fullscreen [duplicate])

在Firefox 3中,window.fullScreen起作用( https://developer.mozilla.org/en/DOM/window.fullScreen )。 所以,你可能会做这样的事情: if((window.fullScreen) || (window.innerWidth == screen.width && window.innerHeight == screen.height)) { } else { } In Firefox 3, window.fu ...

而不是使用前缀,我想要求网站访问者升级他们的浏览器(Instead of using prefixes I want to ask site visitors to upgrade their browser)

修改后的问题回答 这是一个CSS唯一的方法来实现。 由于CSS @supports无法在您的目标(不需要的)浏览器上运行:Safari 7-8,IE <= 10,Android浏览器<4.4,UC浏览器和Opera Mini <8,您的“浏览器升级”信息将会显示对那些使用这个规则。 @supports (display: flex) { .browserupgrade { display: none; }} 有几个浏览器仍然支持非前缀flex但不支持@supports ,IE 11 (1)和Op ...

WebSockets的?(WebSockets? Is it to new to start using for Browser Based MMO based on Javascript)

答 :这不是太新,几乎可以在任何浏览器上使用。 WebKit已经有很长一段时间的WebSocket支持(基本上任何使用Safari或Chrome的人都有它)。 从iOS 4.2开始,WebSockets已经开启(Apple在以前的版本中已经停用了它)。 Opera 11.0将拥有它(10.7现在是11.0)。 Firefox 4.0包含它,但默认情况下禁用(在about:config中启用)。 Firefox 5.0或6.0可能会默认启用它。 对于其他浏览器,您可以使用基于Flash的web-so ...

检查实体框架中是否存在对象的最佳方法?(Best way to check if object exists in Entity Framework?)

如果你不想直接执行SQL,最好的方法是使用Any() 。 这是因为Any()将在找到匹配后立即返回。 另一个选项是Count() ,但这可能需要在返回之前检查每一行。 这是一个如何使用它的例子: if (context.MyEntity.Any(o => o.Id == idToMatch)) { // Match! } 并在vb.net If context.MyEntity.Any(function(o) o.Id = idToMatch) Then ' Match! End ...

Javascript支持集?(Does Javascript supports Sets?)

你的钥匙串是? 每个JavaScript对象都是一个地图,这意味着它可以代表一个集合。 如您在提到的页面中所述,每个对象只接受每个键的一个副本(属性名称)。 键/属性的值无关紧要。 Are your keys strings? Every JavaScript object is a map, which means that it can represent a set. As illustrated in the page you mentioned, each object will acc ...




  • Android宽度:100%修复(网站接管问题)(Android width:100% fix (website takeover issue))
  • C ++函数/方法设计的良好实践(Good practice in C++ function/method design)
  • 计算其他表中不存在的所有记录 - SQL查询(Count all records that does not exist to other table - SQL Query)
  • 为什么我要用JPA共享ID?(Why do I get shared Ids with JPA?)
  • asp.net - 如何显示来自html格式的数据行的字段(asp.net - how to display a field from data row that is in html format)
  • 我们如何使用ActiveRecord从连接表中删除行?(How can we delete rows from a join table by using ActiveRecord?)
  • ng-class搞乱了类的顺序(ng-class messing with the order of classes)
  • oracle 12g无效数字错误(oracle 12g invalid number error)
  • 更改ng-src值onclick(Change ng-src value onclick)
  • 如何在android中自动添加自定义依赖项以创建新项目?(How to add custom dependencies automatically in android for ever a new project is created?)
  • datetime函数在PHP中(datetime function in php)
  • 在javascript中获取会话数组的值(in javascript get the value of a session array)
  • 如何在UTF8中编译LaTeX?(How can I compile LaTeX in UTF8? [closed])
  • Rspec:“array.should == another_array”,但不用担心订单(Rspec: “array.should == another_array” but without concern for order)
  • Logcat错误:无法在android片段中加载视图(Logcat error: unable to load view in android fragments)
  • JavaFX的。(JavaFX. Adding items to the list in different threads is not working)
  • 从GDATA日历资源迁移到Google Calendar Resource api(Migrate from GDATA calendar resource to Google Calendar Resource api)
  • SSRS 2008 - 以零情景处理分割(SSRS 2008 - Dealing with division by zero scenarios)
  • 我如何以编程方式添加一个listView列标题的点击事件(How can I add a listView column header a click event programmatically)
  • Wxpython:无法检索有关列表控件项XXX的信息(Wxpython: Couldn't retrieve information about list control item XXX)
  • 使用Tortoise SVN在SVN存储库中移动目录(Move Directory across SVN repository using Tortoise SVN)
  • 天蓝色服务结构集群中的web api无状态服务是否在一段时间不活动后进入休眠状态?(Do web api stateless services in azure service fabric cluster go to sleep after a period of inactivity?)
  • 我可以设置intelliJ来突出显示PHP编码风格吗?(Can I set intelliJ to highlight php coding style?)
  • 用javafx创建一个Truetype字体文件(Creating a Truetype Font file with javafx)
  • Spring ftp配置错误(Spring ftp configuration is wrong)
  • 使用gsub去除多个字符(Using gsub to strip multiple characters)
  • 续订推送证书并保持当前的App Store App正常工作(Renew Push certificate and keep current App Store App working)
  • js:ES5和ES6之间关于'this'关键字用法的一个令人困惑的观点(js: one confusing point about 'this' keyword usage between ES5 and ES6)
  • window.onload vs $(document).ready()(window.onload vs $(document).ready())
  • 在Swift中,如何声明一个符合一个或多个协议的特定类型的变量?(In Swift, how can I declare a variable of a specific type that conforms to one or more protocols?)