标签:javascript user-agent browser
好吧,这是我设法登陆的边缘案例.我正在测试我的应用程序在新的Tizen操作系统上.我的JS代码有成千上万的导航器检查.就像是:
navigator.userAgent.toLocaleLowerCase().indexOf("android") || navigator.userAgent.toLocaleLowerCase().indexOf("iPad")
现在Tizen OS在我的测试设备上的userAgent没有这些字符串.很多我的CSS和JS都因此而破裂.我现在处于POC模式,并且不想花时间为所有这些条件添加额外的检查.有没有办法以编程方式设置userAgent?有点像:
navigator.userAgent += " Tizen" //does not work.
MDN说它是一个读写属性.我无法修改它.帮助我.欺骗userAgent的另一种聪明方式或者设置它的正确方法.谢谢.
解决方法:
My JS code has thousands of navigator checks
在这种情况下,你的JS代码有问题.
您基本上刚刚发现了进行UA字符串检测的最终原因被认为是非常糟糕的做法.
简而言之,如果您的代码看起来如上所述,那么您做错了.检测UA字符串的合法原因很少,并且这些原因都不适用于在客户端本身上运行的代码.
在浏览器中有数千行这样的东西????这只会对您网站的性能造成不利影响.
Is there a way to programmatically set userAgent?
MDN says its a read-write property.
userAgent字符串是只读值.
但是,你可以override the getter,所以有办法让它可写.丑陋但可能.
我真的建议避免这样做.
即使没有浏览器供应商故意改变他们的UA字符串来破坏这种代码(他们这样做),你的任务基本上永无止境;每次发布新设备/浏览器/版本时,您都必须不断重新访问此代码,并且您的数千行代码将不断变得越来越大.
当然,如果用户修改了浏览器的UA字符串,它将完全不可靠.
如果必须的话,现在用黑客修复它,但要注意这将继续吃掉你越来越多的时间.您确实需要考虑切换到更好的编码实践,例如特征检测而不是UA检测.
标签:javascript,user-agent,browser 来源: https://codeday.me/bug/20191002/1845188.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。