Board logo

标题: Discuz7.2完美兼容IE9方案(非兼容模式),也是本站正使用的方案 [打印本页]

作者: liyafe1997    时间: 2012-1-7 13:36     标题: Discuz7.2完美兼容IE9方案(非兼容模式),也是本站正使用的方案

这个方案,AJAX跳转无响应问题是来自于那个叫啥网站了,貌似是IT公社。
管理菜单问题和兼容模式问题是稻草站长自行研究出来的。
好了 ,步入正题。按照下面的步骤修改:

1.首先先打上DISCUZ官方的补丁:http://www.discuz.net/thread-2050393-1-1.html,但是这样并不完美,咱们继续改。

2.解决AJAX跳转无反应问题
    修改include/js/common.js
    把ajaxpost函数替换为(就是自己看ajaxpost下面的大括号,自己应该能判断哪个是ajaxpost的内容的[注意:是function ajaxpost,改的内容从function ajaxpost开始,截止到function ajaxmenu上面(不包括function ajaxmenu),这里就是function ajaxpost的内容了,很多朋友说不行,估计就是这里没改好,改的时候得小心点,看准了]):
-----由于代码中有特殊符号,没法发上来,所以我贴到一个txt里面了----- ajaxpost.txt (1.82 KB)

3.强制为IE9模式(这样网站在IE9下就不会工作在IE7/8兼容模式下了,如果个个网站都用兼容模式,那还要IE9干啥)。
    把头部(header.html)中的
  1. <meta http-equiv="X-UA-Compatible" content="IE=X">
复制代码
(X这里可能是7可能是8,因为有些站长可能自己改过,默认是7)。
把X改为9,也就是
  1. <meta http-equiv="X-UA-Compatible" content="IE=9">
复制代码


4.解决在IE9模式下帖子右下角勾上管理,但管理菜单不出来的问题。
      moderate.js(貌似在/include/js下)大约50行的位置
  1. function pidchecked(obj) {
  2.         if(obj.checked) {
  3.                 if(BROWSER.ie && !BROWSER.opera) {
  4.                         var inp = document.createElement('<input name="topiclist[]" />');
  5.                 } else {
  6.                         var inp = document.createElement('input');
  7.                         inp.name = 'topiclist[]';
  8.                 }
  9.                 inp.id = 'topiclist_' + obj.value;
  10.                 inp.value = obj.value;
  11.                 inp.style.display = 'none';
  12.                 $('modactions').appendChild(inp);
  13.         } else {
  14.                 $('modactions').removeChild($('topiclist_' + obj.value));
  15.         }
  16. }
复制代码

      有浏览器判断,但经测试var inp = document.createElement('input');确实能在IE下执行,所以我们删除这浏览器判断,也就是把这堆代码改成:
  1. function pidchecked(obj) {
  2.         if(obj.checked) {
  3.                 var inp = document.createElement('input');
  4.                 inp.name = 'topiclist[]';
  5.                 inp.id = 'topiclist_' + obj.value;
  6.                 inp.value = obj.value;
  7.                 inp.style.display = 'none';
  8.                 $('modactions').appendChild(inp);
  9.         } else {
  10.                 $('modactions').removeChild($('topiclist_' + obj.value));
  11.         }
  12. }
复制代码


好了,去后台更新缓存,问题完美解决了。

该贴已经同步到 liyafe1997的微博

附件: ajaxpost.txt (2012-1-7 13:38, 1.82 KB) / 下载次数 8587
http://www.dcrjs.com/attachment.php?aid=2797&k=e7028e0fd3075e8b1f6854515213138e&t=1732213547&sid=GPnp69




欢迎光临 稻草软件论坛 (http://www.dcrjs.com/) Powered by Discuz! 7.2