You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pywebview迷你浏览器刷新按钮无法加载含www/语言代码前缀域名求助

问题分析与解决方案

问题原因

你的刷新按钮加载报错,核心问题出在refr()函数对URL的错误处理:

  • 盲目替换URL中所有www.字符串,不管它出现在域名、路径还是参数里,直接破坏了URL的有效性(比如https://www.google.com/search?q=www.test会被改成https://google.com/search?q=.test)。
  • 对于带语言子域名的URL(如https://zh-CN.www.google.com),错误移除www.后会导致域名格式不符合网站要求,触发加载失败。

修复方案

最简单且安全的做法是直接重新加载当前获取的完整URL——window.get_current_url()返回的是当前页面的有效完整URL,直接用它调用load_url()即可正常刷新,不需要做任何手动修改。

修改后的refr()函数:

def refr():
    window = ww()
    url = window.get_current_url()
    window.load_url(url)

如果确实需要统一处理域名中的www.(比如强制移除),应该通过解析URL结构,只修改域名部分,避免影响URL其他内容:

from urllib.parse import urlparse, urlunparse

def refr():
    window = ww()
    url = window.get_current_url()
    parsed_url = urlparse(url)
    # 仅移除域名开头的www.前缀
    if parsed_url.netloc.startswith('www.'):
        parsed_url = parsed_url._replace(netloc=parsed_url.netloc[4:])
    cleaned_url = urlunparse(parsed_url)
    window.load_url(cleaned_url)

完整修改后代码

import webview as wb
import webview.menu as mm
from urllib.parse import urlparse, urlunparse  # 处理www时需要添加这行

mp = {
    'back': '<--',
    'ref': 'Refresh',
    'fr': '-->'
}
file = open('_app_data_\path.txt', 'r')
path_c = file.read()
file.close()

def ww():
    return wb.windows[0]

def load_ed():
    window = ww()
    if window.get_current_url() != None:
        window.set_title('Test Browser - ' + window.get_current_url())
    else:
        window.set_title('still loading')

def exec():
    window = ww()
    window.events.loaded += load_ed

def ok():
    print('ok')

def refr():
    window = ww()
    url = window.get_current_url()
    # 方案一:直接刷新原URL
    window.load_url(url)
    
    # 方案二:如果需要移除域名中的www.,注释上面一行,启用下面的代码
    # parsed_url = urlparse(url)
    # if parsed_url.netloc.startswith('www.'):
    #     parsed_url = parsed_url._replace(netloc=parsed_url.netloc[4:])
    # cleaned_url = urlunparse(parsed_url)
    # window.load_url(cleaned_url)

men_itm = [
    mm.MenuAction(mp['back'], ok),
    mm.MenuAction(mp['fr'], ok),
    mm.MenuAction(mp['ref'], refr)
]

window = wb.create_window('Test Browser is opening...', url='https://google.com/', resizable=True, min_size=(200, 100), draggable=True, text_select=True)
wb.start(menu = men_itm, private_mode=False, storage_path=path_c, func = exec)

内容的提问来源于stack exchange,提问作者cat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 16:45:36