-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Discuz 7.2 IE9 Chrome兼容性修正脚本。
此版本为Discuz 7.2专用,编码为gb2312,如需要用utf-8版本,进行转码即可。
直接覆盖原include/js/common.js,然后清空论坛缓存文件即可。
PS:记得备份原来的文件,成型良好的文件管理习惯。
使用了http://www.quirksmode.org/js/detect.html的BrowserDetect object 原来的浏览器判断把Firefox和Chrome判断为同一个浏览器。新增的与旧的无冲突。
问题出在function ajaxpost 中的对iframe内容获取问题上,以下内容对IE9和非最新版本的Chrome已无效:
if(BROWSER.ie) {
s =
因为在IE9中,iframe内的文档类型会与父窗口一致,在这里不再为xml文档类型,而是html,唯一获取其内容的方法是
document.body.innerHTML
或者
window.parent.ajaxPostContent=document.childNodes[0].innerText
而前者的噪音很大,最好的方法是把后者的CDATA部分取出:
innerText..replace(/^((\n|.)?)〈![CDATA[/i,"").replace(/]]〉(\n|.)?$/i,"")
在新版的Chrome中,xml内容被分散到几个childnode中,所以需要一个循环来获取全部内容:
for(var i = 0;i<length;i++){ s+= xmlNodes[i].nodeValue;}
模板empty()对部分变量判断会有误,造成生成的标签嵌套混乱,可以把判断出错的换个相关变量,如$inajax,具体此处不详述。 好几个模板在文件存多1个的错误,主要体现在首页、帖子查看和列表,具体请自行测试。