用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

微客吧 首页 教程 微信小程序 新手教程 查看内容

按钮无法点击 Do not have xx handler in current page,去掉BOM头的方法 ... ...

纸飞机 2018-3-8 09:37

一:按钮无法点击 Do not have xx handler in current page作者:周大同,来自原文地址 奇怪的问题,A页面push到B页面 调试工具提示page route错误Pagenot found. May be caused by: 1. Forgot to add page route in ...

一:按钮无法点击 Do not have xx handler in current page

作者:周大同,来自

原文地址


奇怪的问题,A页面push到B页面 调试工具提示page route错误

Page[RR]not found. May be caused by: 1. Forgot to add page route in app.json. 2. Invoking Page() in async task.

注:为方便搜索 自定义事件名 缩写XX 页面路径 RR 详细见图

page route 错误
页面能正常显示,不过按钮事件不能触发 提示无法在当场页面找到触发事件

Do not have XX handler in current page: RR. Please make sure that XX handler has been defined in RR, or RR has been added into app.json

仔细检查,路径添加了,事件也添加了,依然错误,无法找到错误原因,最后尝试替换路径顺序,页面点击事件正常

修改前

修改后 (报错页面oder 提到第二位)
小细节:因习惯Xcode自动保存,有时候没保存,导致灵异事件,新写代码无效,修改无效,请注意上图 文件名后的绿点(未保存标记)

真是灵异的事情,如果有人知晓,请在下方留言解惑,谢谢(灵异是夸张说法,用以掩盖自己知识盲区,或粗心,各位看官不要被带坏了),

感谢 @3c18e98605c3 找到问题所在:

位置调换到后面的 "pages/personal/personal 页面 ,.js 文件中 没有使用Page() 函数注册页面,导致后续页面注册被中断了.

二:详解BOM头以及去掉BOM头的方法

本文非常重要,因为微信小程序有一个重要的问题,就是带有BOM头导致的各类奇异问题,比如json安卓上无法解析等;

类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于 PHP来说,BOM是个大麻烦。

PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个字符呢!

window编辑器如果保存为utf8文件就会帮你加上BOM头,以告诉其他编辑器以utf8来显示字符

但是在网页上并不需要添加BOM头识别,因为网页上可以使用 head头 指定charset=utf8告诉浏览器用utf8来解释.但是你用window自动的编辑器,编辑,然后有显示在网页上这样就会显示出0xEF 0xBB 0xBF这3个字符。

解决方法:网页上就需要去除0xEF 0xBB 0xBF,可以使用editplus 选择不带BOM的编码,这样就可以去除了

1: editplus去BOM头的方法

编辑器调整为UTF8编码格式后,保存的文件前面会多出一串隐藏的字符(也即是BOM),用于编辑器识别这个文件是否是以UTF8编码。运行Editplus,点击工具,选择首选项,选中文件,UTF-8标识选择 总是删除签名,然后对PHP文件编辑和保存后的PHP文件就是不带BOM的了;

2、ultraedit去除bom头办法

打开文件后,另存为选项的编码格式里选择(utf-8 无bom头),确定就ok了

附:再来一段议论utf8的BOM信息的
BOM是指php文件本身的存储方式为带BOM的UTF-8,普通页面的中文乱码方式一般不是由这个原因导致的。

header("Content-type: text/html; charset=utf-8");
这句话控制html输出页面的编码方式,

BOM只有在WINDOWS下采用“记事本”存储为UTF-8时才会有,这个可以用WINHEX把开始的2个字节删掉。
在dreamweaver里面编码设置里面可以设置是否带BOM,一般只要php输出的不是图片(GDI Stream),BOM都不会导致问题。
GDI Stream如果开头有了额外的 字符就会显示为 红叉。

鲜花
鲜花
握手
握手
雷人
雷人
路过
路过
鸡蛋
鸡蛋
分享至 : QQ空间
收藏