使用wxPython WebView浏览器版本问题
使用CodeMirror和wxPyhton的WebView创建嵌入客户端的本地代码编辑工具。
版本为wxPython 3.0,CodeMirror 支持的浏览器IE8或以上。
wxPython提供了HtmlWindow,不过HtmlWindow不是一个完全的渲染引擎,没有办法处理css和javascript。这里是用WebView来进行渲染,在Windows上使用Trident Engine,就是IE的内核。使用时调用的是本地安装的IE,通过当前的WebBrowser控件提供,默认是模拟IE7,通过注册表可以进行修改,看这里。
原先在默认的IE7中Tab键有问题,我以为是Tab键发生冲突,后面经过折腾发现了浏览器版本过低,js的解释有问题,终于问题得以解决。
下面是在windows下python修改默认IE版本为IE11,使用_winreg进行注册表的修改,修改完成后,删除修改过的键值
#coding=utf-8
import _winreg, sys #更改系统默认编码
reload(sys)
sys.setdefaultencoding('utf8') # 这里需要打开所有权限
key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,
r"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", 0, _winreg.KEY_ALL_ACCESS)
try:
# 设置注册表python.exe 值为 11000(IE11)
_winreg.SetValueEx(key, 'python.exe', 0, _winreg.REG_DWORD, 0x00002af8)
except:
# 设置出现错误
print('error in set value!') # 用完取消注册表设置
_winreg.DeleteValue(key, 'python.exe')
# 关闭打开的注册表
_winreg.CloseKey(key)
完整的一个sample放入wxPython中, 其中a.html是在本地导入的需要渲染的html文件:
import wx, wx.html2, os, _winreg class MyBrowser(wx.Frame):
def __init__(self, *args, **kwds):
wx.Frame.__init__(self, None, -1, "My Frame", size=(300, 300))
# 这里需要打开所有权限
self.key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,
r"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", 0, _winreg.KEY_ALL_ACCESS)
try:
# 设置注册表python.exe 值为 11000(IE11)
_winreg.SetValueEx(self.key, 'python.exe', 0, _winreg.REG_DWORD, 0x00002af8)
except:
# 设置出现错误
print('error in set value!')
self.browser = wx.html2.WebView.New(self, style=0)
self.Bind(wx.EVT_CLOSE, self.OnClose) def OnClose(self, evt):
print('close')
# 用完取消注册表设置
_winreg.DeleteValue(self.key, 'python.exe')
# 关闭打开的注册表
_winreg.CloseKey(self.key)
evt.Skip() if __name__ == '__main__':
app = wx.App()
frame = MyBrowser()
frame.browser.LoadURL(os.path.realpath("a.html"))
frame.Show()
app.MainLoop()
使用wxPython WebView浏览器版本问题的更多相关文章
- IE浏览器版本判断 HTML代码
<!--[if IE 6.0]> <div id="noie6" style="z-index: 20002;border: 1px solid #F7 ...
- js判断浏览器类型以及浏览器版本
判断浏览器类型: if navigator.userAgent.indexOf(”MSIE”)>0) {} //判断是否IE浏览器 if(isFirefox=navigator.userAg ...
- javascript判断手机浏览器版本信息
<script type="text/javascript"> /* * 智能机浏览器版本信息: * */ var browser={ versions:functio ...
- .NET 获取客户端的操作系统版本、浏览器版本和IP地址
我们在使用.NET做网站的时候,很多情况下需要需要知道客户端的操作系统版本和浏览器版本,怎样获取客户端的操作系统和浏览器版本呢?我们可以通过分析UserAgent来获取. .NET 获取客户端的操作系 ...
- 设置默认访问项目的客户端的浏览器版本(IE版本)
在项目开发部署中,发现浏览器不兼容现象,在不处理兼容性情况下让用户更好体验(IE浏览器) 我们来设置客户端默认访问项目的浏览器版本 如下所示的是不同IE版本下的效果截图比较: IE5.IE6下: IE ...
- js,onblur后下一个控件获取焦点判断、html当前活跃控件、jquery版本查看、jquery查看浏览器版本、setTimeout&setInterval
需求: input控件在失去焦点后直接做验证,验证通不过的话,显示相应错误.但是如果失去焦点后点击的下个控件是比较特殊的控件(比如,退出系统),那么不执行验证操作,直接退出系统(防止在系统退出前,还显 ...
- [JavaCore] 微信手机浏览器版本判断
公司要做微支付,微信浏览器版本要大于5 package com.garinzhang.web.weixin; import org.apache.commons.lang.StringUtils; i ...
- js判断IE浏览器版本
if(navigator.userAgent.indexOf("MSIE")>0){ if(navigator.userAgent.indexOf("MSIE 6. ...
- js实现判断浏览器版本
//判断浏览器版本是否过低 var ua = navigator.userAgent.toLowerCase(); if (window.ActiveXObject) var IEversion = ...
随机推荐
- Website Speed Optimization Guide for Google PageSpeed Rules
原链接地址:http://www.artzstudio.com/2016/07/website-speed-optimization-guide-for-google-pagespeed-rules/ ...
- 不让Win7休眠的设置
1:原因 目前有一个项目是采用微服务的架构搭建的,其中一个微服务的数据库是在一位同事的电脑上(Win7系统),一旦这台电脑休眠,对应的数据库服务就访问不了,所以,需要保持此台电脑永不休眠. 2:傻瓜式 ...
- NHibernate系列文章十六:使用程序集管理NHibernate项目(附程序下载)
摘要 在实际的项目中,经常是将NHibernate的实体关系映射类做成独立的工程(assembly dll),只对外提供Session调用的接口.这个程序集作为数据访问层,可以被上面的多个工程(ASP ...
- CentOS6 vsftpd 安装及优化方法
我在每次配置ftp的时候都会一头雾水,一直也没总结一份特别完整有效的方法出来,这次特别记录一下,以备以后使用 1.安装vsftpd yum -y install vsftpd chkconfig vs ...
- 第 一 百 天上课 PHP TP框架 数据库修改和删除
修改的三种方式 //造数组的方式修改 public function xiugai1() { $db=D('yonghu'); $attr=array ( 'zhanghao'=>001, // ...
- 为窗体设置背景图片-UI界面编辑器(SkinStudio)教程
1.1. 为窗体设置背景图片 在窗体的Background属性中选择图片设置为窗体背景图片
- 7.Mybatis关联表查询(这里主要讲的是一对一和一对多的关联查询)
在Mybatis中的管理表查询这里主要介绍的是一对一和一对多的关联查询的resultMap的管理配置查询,当然你也可以用包装类来实现.不过这里不说,做关联查询的步骤可以简单的总结为以下的几步: 1.分 ...
- C++ dll调用
HINSTANCE PH=LoadLibrary(_T("APlayerCaller.dll")); HWND hwnd = AfxGetMainWnd()->m_hWnd; ...
- struts2各个jar包的作用
---------------------------------------------------struts2核心jar包------------------------------------ ...
- 安装和部署ZkeaCMS
ZkeaCMS是基于EasyFrameWork,使用ASP.NET MVC4开发的开源CMS. ZkeaCMS一个内容管理软件(网站).ZkeaCMS不仅只是管理内容,更是重新定义了布局.页面和组件, ...