Как определить текущий открытый браузер и открыть новую страницу в том же браузере с помощью Python? - PullRequest
0 голосов
/ 03 марта 2012

Я создаю веб-сайт, на котором я использую некоторые HTML-формы, которые передают значения в скрипт Python, а взамен скрипт Python открывает новую страницу / вкладку в веб-браузере.Для этого я использую модуль webbrowser.

Хотя я могу выбрать браузер по умолчанию или любой другой браузер, используя "webbrowser.get ([name])";но меня беспокоит то, что это будет общедоступная веб-страница, поэтому любой может открыть страницу в любом браузере по своему выбору.

Проблема, с которой я сталкиваюсь, такова: допустим, мой браузер по умолчанию - «firefox», иЯ открываю страницу в «chrome», поэтому, когда скрипт python открывает новую страницу, он открывает ее в «firefox» вместо «chrome».


Вот мои вопросы:

  • Как определить текущий веб-браузер, который использует пользователь?
  • Как открыть новую страницу в этом браузере?

Код выглядит следующим образом:
#! C: \ Python27 \ python.exe -u
# - - кодировка: UTF-8 - -
import MySQLdb
importsys
import cgi
import re
import cgitb
import webbrowser
cgitb.enable ()


print "Тип содержимого: текст / обычный; кодировка =utf-8 "
print
try:
db = MySQLdb.connect (host =" localhost ", user =" root ", passwd =" ", db =" pymysql ")
кроме MySQLdb.Error, e:
print "Ошибка"% d:% s "% (e.args [0], e.args [1])
sys.exit ()

----- Провести некоторый анализ с базой данных ---- ----- Создайте несколько файлов kml ----
# Используйте файлы kml для отображения точек на карте.
# Открыть страницу с открытыми слоями
webbrowser.open_new_tab ('http://localhost/simulator.html')

Ответы [ 2 ]

1 голос
/ 03 марта 2012

Единственная причина, по которой вы, вероятно, убеждены в том, что это рабочий подход, наиболее вероятна, потому что вы запускаете сервер на своей локальной машине. Код Python, который вы выполняете, находится на стороне сервера, поэтому он не контролирует клиента. Клиент обычно находится на удаленной машине. В вашем случае, так как ваш клиент также находится на сервере, вы получаете эффект, когда ваш скрипт Python открывает вкладку браузера с модулем webbrowser.

Это невозможно в стандартной клиент-серверной веб-ситуации. Клиент будет удаленным, а ваш код на стороне сервера не сможет управлять их машиной. Вы можете обслуживать только те http-запросы, которые их браузер будет получать и обрабатывать. Если вы хотите открывать вкладки, это должно быть решение javascript на стороне клиента.

Более реалистичным решением было бы сделать так, чтобы ваш сервер обслуживал правильный код на стороне клиента. Если форма отправлена ​​через ajax, тогда ваш ответ может содержать javaacript, который откроет новую страницу.

0 голосов
/ 03 марта 2012

Ваш код Python будет работать на сервере.Человек, который посещает ваш сайт, будет получать только html-страницы.См. это об открытии новых вкладок.Но, пожалуйста, прочитайте больше о том, как работают сайты.Модуль webbrowser используется для клиентских приложений, а не для веб-сайтов.

...