Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

X2 ajaxpost 和 chrome 窗口拦截扩展 Better Pop Up Blocker 存在冲突及解决方案

[复制链接]
foolant 发表于 2011-6-11 04:16:39 | 显示全部楼层 |阅读模式
本帖最后由 foolant 于 2011-6-11 04:38 编辑

测试网站时,发现用 chrome 登录 X2 时不会跳转 (登录discuz.net时就不会跳转,刷新一次页面后发现已经登录成功,而我本地的测试站根本就不能登录,JS 报 ajaxpost 里面元素未找到错误
Uncaught TypeError: Cannot call method 'indexOf' of undefined
chrome/EventBindings:183Error in event handler for 'undefined': TypeError: Cannot set property 'display' of null

错误发生在 common.js 660 行(ajaxpost函数内)



google以后搜索到这篇 "  在Chrome下面Ajax有问题,不能正确获取数据。"
https://discuz.dismall.com/thread-2099043-1-1.html

方的回复是没有发现问题, 但是经过对 netroby 在此帖的回复中提供的方案进行测试后发现可以解决问题, 查看google提供的其他帖子,发现在discuz.net 上报告的也是有人遇到有人没有遇到问题. 因为我新装的是 chrome 12 稳定版,感觉不可能是因为chrome版本的问题, 后来想到既然存在差异,有没有可能是因为安装的chrome扩展/插件导致的不兼容?


随后的测试验证了此猜测, 先打开chrome隐私模式(此时默认是不会加载扩展/插件的)发现可以正常登陆,X2 ajax 无问题, 插件冲突的想法得到确认,逐一排除使用中的扩展插件, 发现是和 Better Pop Up Blocker 这个弹出窗口拦截插件有冲突 ( Better Pop Up Blocker, 秒杀国内流氓网站弹出带极度令人厌恶的有声音 flash 网页游戏弹出广告的有效插件,拦截得非常干净),其他人在遇到相同问题时安装的插件是否包含这个不太清楚,但应该也是类似的插件.

Better Pop Up Blocker  并没有拦截所有X2 用ajax弹出的窗口层,而是只拦截一部分,其中就包括了登录时的代码,导致此冲突比较难以发现.附上一个改良的解决方案(并非最好,但是可以解决问题), 只需一句代码即可搞定.

修改 static/js/common.js , 从大约 646 行代码开始(位于 ajaxpost 函数体内)
  try {
                        s = $(ajaxframeid).contentWindow.document.XMLDocument.text;
                } catch(e) {
                        try {
                                s = $(ajaxframeid).contentWindow.document.documentElement.firstChild.wholeText;
                                if(!s) s = $(ajaxframeid).contentWindow.document.firstChild.textContent;
                        } catch(e) {
                                try {
                                        s = $(ajaxframeid).contentWindow.document.documentElement.firstChild.nodeValue;
                                } catch(e) {
                                        s = '内部错误,无法显示此内容';
                                }
                        }
                }

绿色那行为添加的代码,(我这里显示是在650行后面,请以代码为参考进行修改而不是行号)
添加后即可解决此问题, Better Pop Up Blocker正常工作,X2 正常使用.




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-9-22 10:01 , Processed in 0.135499 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表