小程序报错-图片引入正常,但是无缘无故报错问题

本文介绍了一个关于小程序中图片加载失败的问题及其解决方案。问题表现为图片在小程序中无法正常加载并出现404错误,通过在代码中增加条件判断来确保图片地址正确加载,从而解决了该问题。

代码实例

<image class="avatar" src="{{postData.avatar}}"></image>

类似的小程序代码中,图片能正常显示,但是在Console里还是会报错:

Fri Jun 29 2018 09:50:52 GMT+0800 (中国标准时间) 渲染层网络层错误
VM6951:2 Failed to load image https://weapp.qiyue99.com/
the server responded with a status of 404 (HTTP/1.1 404 Not Found) 
From server 127.0.0.1

网上查找,原因在于初始化的时候,变量还没渲染进去,导致src为错误的值

解决办法:

利用wx:if判断,当变量存在时才渲染,可以解决报错问题. 

<image wx:if="{{postData.avatar}}" class="avatar" src="{{postData.avatar}}"></image>

Windows程序无故收到WM_CLOSE消息可能有以下原因: ### 原因 - **系统事件触发**:系统在某些特定操作时会发送WM_CLOSE消息,比如系统关机、注销等操作。当系统进行这些操作时,会向所有打开的窗口发送消息以通知其关闭。例如,在系统准备关机时,会先向各个程序窗口发送WM_QUERYENDSESSION消息询问是否可以关闭,若程序允许,之后会发送WM_ENDSESSION和WM_CLOSE消息来关闭窗口[^2]。 - **其他程序误操作**:其他运行的程序可能由于代码错误或者逻辑问题,错误地向当前程序发送了WM_CLOSE消息。比如某个自动化脚本或者恶意软件可能会错误地向其他程序发送关闭指令。 - **窗口过程处理不当**:如果程序自身的窗口过程对某些消息处理不当,可能会导致触发WM_CLOSE消息。例如,在处理其他系统消息时,错误地调用了发送WM_CLOSE消息的函数。 ### 解决方案 - **系统事件处理**:在程序中捕获系统关机、注销等事件,在窗口过程中处理WM_QUERYENDSESSION和WM_ENDSESSION消息。可以在程序中添加相应的处理逻辑,根据不同的情况决定是否允许关闭程序。例如,在Python中使用`win32api`和`win32gui`模块来处理这些消息: ```python import win32gui import win32con def WndProc(hWnd, msg, wParam, lParam): if msg == win32con.WM_QUERYENDSESSION: # 可以在这里添加判断逻辑,决定是否允许系统关闭 return True elif msg == win32con.WM_ENDSESSION: if wParam: # 系统正在关闭,进行必要的清理操作 pass elif msg == win32con.WM_CLOSE: # 检查是否是系统事件触发的关闭 if win32gui.GetLastError() == win32con.ERROR_SHUTDOWN_IN_PROGRESS: # 系统正在关机,进行正常关闭操作 win32gui.DestroyWindow(hWnd) win32gui.PostQuitMessage(0) else: # 可能是其他原因触发的,根据情况处理 pass return win32gui.DefWindowProc(hWnd, msg, wParam, lParam) # 注册窗口类 wc = win32gui.WNDCLASS() wc.lpfnWndProc = WndProc wc.hInstance = win32gui.GetModuleHandle(None) wc.lpszClassName = "MyWindowClass" class_atom = win32gui.RegisterClass(wc) # 创建窗口 hWnd = win32gui.CreateWindow(class_atom, "My Window", win32con.WS_OVERLAPPEDWINDOW, win32con.CW_USEDEFAULT, win32con.CW_USEDEFAULT, 500, 300, 0, 0, win32gui.GetModuleHandle(None), None) # 显示窗口 win32gui.ShowWindow(hWnd, win32con.SW_SHOWNORMAL) win32gui.UpdateWindow(hWnd) # 消息循环 msg = win32gui.GetMessage(None, 0, 0) while msg[0] != win32con.WM_QUIT: win32gui.TranslateMessage(msg) win32gui.DispatchMessage(msg) msg = win32gui.GetMessage(None, 0, 0) ``` - **检查其他程序**:可以使用系统监控工具,如任务管理器、Process Explorer等,检查是否有异常的程序在运行。如果发现可疑程序,可以尝试关闭它们。同时,检查是否有自动化脚本或者第三方软件与当前程序有交互,排查这些软件的代码逻辑是否存在问题- **审查窗口过程代码**:仔细检查程序的窗口过程代码,确保对各种消息的处理逻辑正确。避免在处理其他消息时错误地触发WM_CLOSE消息。例如,在处理WM_SIZE、WM_PAINT等消息时,确保不会意外调用发送WM_CLOSE消息的函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值