在JavaScript中模拟用户代理?

我正在寻找一种以编程方式实时更改navigator.userAgent的方法。在我无法获得自动化javascript单元测试器的尝试中,我放弃了尝试尝试使用fireunit。立刻,我陷入了使用实际浏览器进行JavaScript测试的一堵墙。

具体来说,我需要更改navigator.userAgent以模拟数百个userAgent字符串,以确保对给定函数进行正确的检测和覆盖。navigator.userAgent是只读的,所以我似乎卡住了!如何模拟navigator.userAgent?用户代理切换器(插件)可以切换FF的用户代理,但是我可以在JavaScript中进行切换吗?


皈依舞
浏览 1174回答 3
3回答

慕娘9325324

尝试:navigator.__defineGetter__('userAgent', function(){    return 'foo' // customized user agent});navigator.userAgent; // 'foo'在FF2和FF3中进行了尝试。

收到一只叮咚

以下解决方案可在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');
打开App,查看更多内容
随时随地看视频慕课网APP