本帖最后由 翎Ling 于 2012-4-16 00:03 编辑
问题出现在4.13升级之后,论坛ajax弹出的框框无法隐藏,但是双击弹出框的边缘还是能够关闭.
看了下代码,发现升级后的hideWindow();函数获得不到需要隐藏的div 的id了..
升级前:可以获得id
升级后:无法获得id
找到生成弹出框的js:
发现k(也就是id)可以弹出,但是页面中无法获得.
手工写入id:
发现页面中可以获得手工写入的id:"ling"
再次手工写入id:
发现页面又无法获得id了.
这样问题就锁定在:带'_'的参数被dz过滤了
找到源文件:source\class\discuz\discuz_application.php的282行:
发现参数用ctype_alpha过滤了,只允许字母
查看下x2.5正式版 3.14号未升级之前的源文件:
升级后增加过滤了" 数字 和 下划线"...这导致含有这2中字符的参数会被过滤掉
目前解决办法:照着老版的改回去- -
将source\class\discuz\discuz_application.php的282行代码改为:
$_GET['handlekey']= !empty($_GET['handlekey']) && preg_match('/^\w+$/', $_GET['handlekey']) ? $_GET['handlekey'] : '';
OK,测试问题解决.... |