搜索
aardio官方社区 门户 查看主题

修改navigator.userAgent模拟手机

发布者: 5e365 | 发布时间: 2017-8-31 14:56| 查看数: 193| 评论数: 3|帖子模式

前端js代码通常使用navigator.userAgent来判断是PC还是手机以及微信,类似:
  1. var isApple = navigator.userAgent.match(/iPad|iPhone|Linux|Android|iPod/i) != null;
复制代码


在使用web窗体模拟手机端
  1. var wb = web.form( winform ,/*_UIFLAG_*/,/*_DLCTL_*/
  2.         ,/*USER AGENT*/,true/*securityTrusted*/ );
复制代码


修改低4个参数没有成功,好像是第4个参数的作用是在发起http请求的时候起作用,但对于前端js查询navigator.userAgent无能为力
后来研究出了办法,分享一下,见如下代码:
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="Web Form";right=759;bottom=469)
  4. winform.add()
  5. /*}}*/

  6. //创建web窗体
  7. import web.form;
  8. userAgent = //Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 wechatdevtools/0.7.0 MicroMessenger/6.3.9 Language/zh_CN webview/0
  9. var wb = web.form( winform ,/*_UIFLAG_*/,/*_DLCTL_*/
  10.         ,userAgent/*USER AGENT*/,true/*securityTrusted*/ );
  11. winform.show();

  12. show = function(){
  13.         winform.text = "请稍后..."
  14.         wb.go("http://baidu.com/")        
  15.         wb.wait("");
  16.         winform.text = "完成"
  17.         wb.doScript("alert(navigator.userAgent)")       
  18. }

  19. show()

  20. Urlmon = raw.loadDll("Urlmon.dll");
  21. _URLMON_OPTION_USERAGENT = 0x10000001;
  22. Urlmon.UrlMkSetSessionOption(_URLMON_OPTION_USERAGENT, userAgent, #userAgent, 0);

  23. show()

  24. //启动消息循环
  25. win.loopMessage();
复制代码


要注意一点,这个API好像是对本进程全局修改,也就是如果只想单次生效的话,每次得想办法改回正常值

最新评论

Danboy 发表于 2017-9-12 22:25:58
感觉没什么用
金满斗 发表于 2017-9-13 22:00:37
web.form.util.setUserAgent(wb,tempHeader);
可以直接改指定的userAgent
论坛看到的,以前的帖子
5e365 发表于 2017-9-14 19:52:18
金满斗 发表于 2017-9-13 22:00
web.form.util.setUserAgent(wb,tempHeader);
可以直接改指定的userAgent
论坛看到的,以前的帖子
  1. setUserAgent = function(wb,agent){  
  2.         wb.agent = agent;
  3.         ::Urlmon.UrlMkSetSessionOption(agent?0x10000001:0x10000002,agent,#agent,null);
  4.         ambientPropertyChange(wb,-5513);
  5. }
复制代码


看了下源码,是一样的方法,没搜到以前的帖子。原来已经有封装好的函数了。aardio的确需要的东西几乎都有了,只是有时候自己还不知道

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2017-9-22 07:02 , Processed in 0.046875 second(s), 21 queries , Wincache On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表