javascript – 如何设置navigator userAgent?
作者:互联网
好吧,这是我设法登陆的边缘案例.我正在测试我的应用程序在新的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