python3-webengine-gtk3/usr/lib/python3/dist-packages/webengine/gtk3/_settings.py

100 lines
3.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/env python3
# @author yutent<yutent.io@gmail.com>
# @date 2023/08/08 14:07:26
import gi, os
gi.require_version("WebKit2", "4.1")
from gi.repository import WebKit2
from ._version import version
class Settings(WebKit2.Settings):
def __init__(self):
WebKit2.Settings.__init__(self)
self.set_enable_page_cache(True)
self.set_javascript_can_access_clipboard(True)
self.set_javascript_can_open_windows_automatically(True)
self.set_useragent_with_app('WebEngine', version)
# indexedDB 和 localStorage 和 离线缓存
self.set_enable_html5_database(True)
self.set_enable_html5_local_storage(True)
self.set_enable_offline_web_application_cache(True)
# 平滑滚动
self.set_enable_smooth_scrolling(True)
self.set_enable_fullscreen(True)
# 媒体播放是否需要 用户主动行为
self.set_media_playback_requires_user_gesture(False)
# 允许视频播放窗口不强制全屏
self.set_media_playback_allows_inline(True)
def set_useragent_with_app(self, name, ver):
self.set_user_agent_with_application_details(name, ver)
def set_useragent(self, str):
self.set_user_agent(str)
# 关闭之后, 可以随便跨域请求, 但是有安全隐患(不过, 只要保证你页面只运行你自己的代码, 及信任的代码, 就不会有任何问题)
def disable_security(self):
self.set_disable_web_security(True)
# 禁止全屏 (默认允许)
def disable_fullscreen(self):
self.set_enable_fullscreen(False)
# 启用开发者工具
def enable_devtools(self):
self.set_enable_developer_extras(True)
# 模拟设备
def mock_devices(self):
# 是用于启用或禁用模拟捕获设备的设置选项。
# 在开发网页应用程序时,经常需要使用摄像头或麦克风等捕获设备进行测试和调试。但是,在某些情况下,可能无法直接访问实际的物理捕获设备,或者不希望在开发过程中实际使用这些设备。
# 通过启用WebKit2.Settings:enable-mock-capture-devices设置选项可以使用虚拟的模拟捕获设备来替代实际的物理设备。这样开发人员可以在没有真实设备的情况下进行捕获设备相关的功能测试和调试提高开发效率并简化开发流程。
self.set_enable_mock_capture_devices(True)
def create_setting(options = None):
setting = Settings()
if options is not None:
if options.get('devtools'):
setting.enable_devtools()
setting.mock_devices()
if options.get('app_name') and options.get('app_version'):
setting.set_useragent_with_app(options['app_name'], options['app_version'])
if options.get('useragent'):
setting.set_useragent(options.get('useragent'))
if options.get('web_security') is False:
setting.disable_security()
if options.get('disable_fullscreen'):
setting.disable_fullscreen()
def wrapper(app, extra = None):
if options is not None:
app.app_name = options.get('app_name')
app.app_version = options.get('app_version')
app.set_settings(setting)
return wrapper
基于webkit2封装的webview库, 提供傻瓜式的定制, 和一系列的js方法的注入, 增加前端js直接与系统交互的能力
Python 68.1%
JavaScript 30.4%
Shell 1.5%