为了账号安全,请及时绑定邮箱和手机立即绑定

在JavaScript中模拟用户代理?

在JavaScript中模拟用户代理?

皈依舞 2019-11-27 14:27:13
我正在寻找一种以编程方式实时更改navigator.userAgent的方法。在我无法获得自动化javascript单元测试器的尝试中,我放弃了尝试尝试使用fireunit。立刻,我陷入了使用实际浏览器进行JavaScript测试的一堵墙。具体来说,我需要更改navigator.userAgent以模拟数百个userAgent字符串,以确保对给定函数进行正确的检测和覆盖。navigator.userAgent是只读的,所以我似乎卡住了!如何模拟navigator.userAgent?用户代理切换器(插件)可以切换FF的用户代理,但是我可以在JavaScript中进行切换吗?
查看完整描述

3 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

尝试:


navigator.__defineGetter__('userAgent', function(){

    return 'foo' // customized user agent

});


navigator.userAgent; // 'foo'

在FF2和FF3中进行了尝试。


查看完整回答
反对 回复 2019-11-27
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

以下解决方案可在Chrome,Firefox,Safari,IE9 +和iframe中使用:


function setUserAgent(window, userAgent) {

    if (window.navigator.userAgent != userAgent) {

        var userAgentProp = { get: function () { return userAgent; } };

        try {

            Object.defineProperty(window.navigator, 'userAgent', userAgentProp);

        } catch (e) {

            window.navigator = Object.create(navigator, {

                userAgent: userAgentProp

            });

        }

    }

}

例子:


setUserAgent(window, 'new user agent');

setUserAgent(document.querySelector('iframe').contentWindow, 'new user agent');


查看完整回答
反对 回复 2019-11-27
  • 3 回答
  • 0 关注
  • 1149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信