Python WebKit: взломать и пользовательские

Я сделал Python WebKit Navigator, с GTK. И, поскольку я лучше знаю html/css для рендеринга, чем другие способы, я создал программное обеспечение, использующее python, wekbit и GTK.

У меня есть несколько вопросов. Я прочитал документацию, которую я нашел, и сделал много исследований на Google и Stackru. У меня все еще много вопросов.

Во-первых, в моем приложении я изменяю заголовок окна для связи между javascript и python. Я хочу сделать то же самое в моем навигаторе, но я не могу (мне нужен заголовок). Есть ли у них другие способы? Я хотел бы привязать слушателей событий javascript к python, не меняя заголовок.

РЕДАКТИРОВАТЬ

Я нашел решение. Мы можем связать некоторые события с питоном. Вы можете получить больше документации о событиях в Python:

import webkit
help(webkit.WebView)

Я попытался с консоль-сообщение. Это событие возвращает мне 4 аргумента: webview, webframe, int, msg. Что такое инт? В большинстве сообщений оно оценивается в 13... Если кто-то знает, что это значит.

Во-вторых, моя версия навигатора для Linux очень хорошо воспроизводит медиа-элемент (аудио, видео...). Я полагаю, это потому, что Linux Rulz и зависимости довольно хорошо установлены на моем компьютере. Но на Windows это другое дело... Я видел, что я могу построить WebKit для Windows с этими зависимостями. Но я нашел несколько кодеков JavaScript для чтения медиа-элементов ( https://github.com/audiocogs). Должно ли это быть лучше, чем вводить этот javascript или компилировать webkit по-своему?

В-третьих, я могу обработать настройки кэша? Я уверен, что сейчас в моем браузере нет кэша. (мой код действительно легкий)

В-четвертых, я могу обработать HTTP-запрос? (куки, apache auth, ...)

В-пятых, я использую функции WebView.zoom_in() и zoom_out. И, безусловно, это не то же самое поведение, что Firefox или Chrome, когда я zoom_in или zoom_out. С Firefox или Chrome это похоже на то, что zoom_out сделает вас больше пикселей, чем раньше. Я имею в виду, что если вы уменьшите Chrome, у вас могут быть другие медиа-запросы, чем раньше. С функциями масштабирования в WebView это похоже на изменение размера шрифта. Как я могу сделать масштабирование, как Firefox и Chrome?

В-шестых, я мог бы использовать движок gecko вместо webkit. Но я не знаю, как выбрать между этими двумя. Кажется, что webkit хорошо импортирован в python, gtk и linux. Но геккон, наверное, тоже. Как я мог, по-умному, выбрать?

В-седьмых, у меня возникли проблемы с потоковой передачей. Например, если я хочу услышать какую-нибудь длинную музыку или несколько видео и приостановить их несколько раз, при воспроизведении мультимедиа, происходит ошибка моего браузера. В консоли нет ошибок, и webkit.webview все пустое. Я могу перезагрузить, и это снова работает... Как я могу обработать эту ошибку?

Некоторые соответствующие образцы моего светового кода:

class nav:

 def __init__(self):
  self.browser = webkit.WebView()
  self.browser.connect("create-web-view",self.set)
  self.browser.set_full_content_zoom(True)
  self.browser.get_settings().set_property("enable-webaudio",True)
  self.browser.open(url)

 def on_zoom_in(self, widget):
  self.browser.zoom_in()

 def on_zoom_out(self, widget):
  self.browser.zoom_out()

 def on_zoom_n(self, widget):
  self.browser.set_zoom_level(1.0)

Спасибо,

1 ответ

Не ответы на все ваши вопросы, но это поможет.

Нет необходимости менять заголовок для связи между javascript и python. Вы можете предупредить механизм. Некоторые примеры можно найти https://github.com/nhrdl/notesMD - инструмент, который я написал несколько дней назад. Проще говоря, ваш скрипт использует функцию оповещения, а python получает обратный вызов. Вы можете разобрать текст сообщения с предупреждением и принять решение о действии.

Ваш код не имеет никакого отношения к кешу webkit. Его функция в том, какие страницы посещает ваше приложение и какой сервер предпочитает. Сервер может запрашивать некоторые ресурсы для кэширования (например, images/javascript), а другие - не кэшировать. Я знаю, что webkit gtk 2 поддерживает еще несколько функций для кэширования, но мало что помню в Webkit gtk 1. Хотя я видел, что он кэширует файлы в вашем домашнем каталоге.

Что касается куки, посмотрите на python webkit webview Помните куки?, У Webkit также есть различные методы для получения запросов и ответов, и вы можете прослушивать различные суповые события для интересующих вас вещей.

Я не читал о привязках Python для Geco Engine. Это не значит, что его не существует, только я его не видел.

Другие вопросы по тегам