如何使用Python检测当前打开的Web浏览器并在同一浏览器中打开新页面?

时间:2012-03-03 06:16:24

标签: python browser cgi urllib

我正在建立一个网站,我正在使用一些html表单,它将值传递给python脚本,作为回报,python脚本在Web浏览器中打开一个新的页面/选项卡。我正在使用webbrowser模块。

虽然我可以使用“webbrowser.get([name])”选择默认浏览器或任何其他浏览器;但我担心的是,因为这将是一个公共网页,所以任何人都可以在他们选择的任何浏览器中打开页面。

我面临的问题是:让我说我的默认浏览器是“firefox”,我在“chrome”中打开页面,所以当python脚本打开新页面时,它会打开“firefox”而不是“chrome”。


以下是我的问题:

  • 如何检测用户正在使用的当前网络浏览器?
  • 如何在该浏览器中打开新页面?

代码如下所示:     
#!C:\ Python27 \ python.exe -u
# - - 编码:UTF-8 - -
导入MySQLdb
进口系统
进口cgi
进口重新
进口cgitb
导入webbrowser
cgitb.enable()


print“Content-Type:text / plain; charset = utf-8”
打印
尝试:     
db = MySQLdb.connect(host =“localhost”,user =“root”,passwd =“”,db =“pymysql”)
除了MySQLdb.Error,e:   
打印“错误%d:%s”%(e.args [0],e.args [1])   
sys.exit()

-----用数据库做一些分析----  -----创建一些kml文件----
#使用kml文件在地图中显示点。
#打开openlayers所在的页面
webbrowser.open_new_tab(的 'http://localhost/simulator.html')

2 个答案:

答案 0 :(得分:1)

您可能确信这是一种有效方法的唯一原因很可能是因为您在本地计算机上运行服务器。您正在执行的python代码是服务器端,因此它无法控制客户端。客户端通常位于远程计算机上。在您的情况下,因为您的客户端也在服务器上,您可以看到您的python脚本打开带有webbrowser模块的浏览器选项卡。

在标准客户端服务器Web情况下,这是不可能的。客户端将是远程的,您的服务器端代码无法控制他们的计算机。您可能只返回http请求,这些请求只是浏览器接收和呈现的内容。如果你想打开标签,它需要是客户端的JavaScript解决方案。

更现实的解决方案是让您的服务器回送正确的客户端代码。如果表单是通过ajax提交的,那么您的响应可能包含将打开新页面的javaacript。

答案 1 :(得分:0)

您的python代码将在服务器上运行。访问您网站的人只会收到HTML页面。有关打开新标签的信息,请参阅this。但请阅读有关网站如何运作的更多信息。 webbrowser模块用于客户端应用程序,而不用于网站。