2017年7月26日水曜日

ADempiereのIEブラウザ対応


ADempiereは、FireFoxやChromeには対応しており問題なく動作するが
IEとなると少し問題がある。
グリッド表示やテキストボックスの表示がおかしくなったり、画面が真っ白になってしまうことがある。

ただし、これは、コミュニティ版のADempiereの場合で、SMBアソシエイツ社では、IEでも問題なく正常動作するように修正を加えている。

ADempiereをIEで正常動作させるためには、以下の対応が必要となる。


■Compatible対応のヘッダー出力をしない
 WebUIプロジェクトのindex.zulで、IE8へのCompatible対応タグが記述されているので、これを削除する。
 具体的には、index.zulの7行目あたりの以下の部分を削除する。
  <?meta http-equiv="X-UA-Compatible" content="IE=8" ?>

■拡大、縮小時のエラー対応
 上記の対応をすれば、IEでもほぼほぼ正常動作が可能になるが
 Ctrl+マウスホイールを使った拡大縮小時にエラーが発生してしまう。
 
 これに対応するには、以下のソースの修正が必要である。
 zk.jarの中にある「MouseCommand.java」に以下の修正をおこなう。
 processメソッドの中で、NumberForamtExceptionが発生しないように対処をおこなっている。
 
        // SMBA_CHG IE対応(NumberFormatExceptionの回避)
        MouseEvent event = null;

        if( data == null || data.length == 0 )
        {
            event = new MouseEvent(getId(), comp);            //no area, no coord
        }
        else if( data.length == 1 )
        {
            event = new MouseEvent(getId(), comp, data[0]);    //by area
        }
        else
        {
            BigDecimal bdVal1 = new BigDecimal(data[0]);
            BigDecimal bdVal2 = new BigDecimal(data[1]);

            event = new MouseEvent(getId(), comp,            //by coord
                bdVal1.intValue(), bdVal2.intValue(),
                data.length < 3 ? 0: Commands.parseKeys(data[2]));
        }

//        final MouseEvent event =
//        data == null || data.length == 0 ?
//            new MouseEvent(getId(), comp):            //no area, no coord
//        data.length == 1 ?
//            new MouseEvent(getId(), comp, data[0]):    //by area
//            new MouseEvent(getId(), comp,            //by coord
//                Integer.parseInt(data[0]), Integer.parseInt(data[1]),
//                data.length < 3 ? 0: Commands.parseKeys(data[2]));
        // CHG_END
 

  ちなみに、zk.jarは、通常はjarとして参照していることが多いが、ZK関連のjarもEclipseプロジェクト化しておくと、デバッグができるので便利である。



■メッセージの非表示
 最後に、ログインページで表示されるメッセージを非表示にする。
 IEでログインページにアクセスすると、「一部機能が正常に動作しない可能性がある」という旨のメッセージが表示されてしまう。

 これを表示しないようにしておくには、webuiプロジェクトのWLogin.javaを修正する。
 81行目あたりでメッセージを表示している部分を削除しておく。
 
        /*
        if (!AEnv.isBrowserSupported())
        {
//            String msg = "You might experience slow performance and user interface anomalies using your current browser to access the application. We recommend the use of Firefox, Google Chrome or Apple Safari.";
            String msg = "You might experience slow performance and user interface anomalies using your current browser to access the application. We recommend the use of Firefox, Google Chrome or Apple Safari."
                + "<BR>現在のブラウザはADempiereの一部機能が正常に動作しない可能性があります。ADempiereのすべての機能を使用するにはFirefoxやGoogle ChromeまたはSafariなどのブラウザをお勧めします。";
            browserWarningWindow = new Window();
            Div div = new Div();
            div.setStyle("background-color:#FFFFCC; font-size: " + (AEnv.getFontSize() - 1) + "pt");
            div.appendChild(new Text(msg));
            browserWarningWindow.appendChild(div);
            browserWarningWindow.setPosition("top,right");
            browserWarningWindow.setWidth("550px");
            browserWarningWindow.setPage(page);
            browserWarningWindow.doOverlapped();
        }
        */

これらの対応をしておけば、ADempiereにInternet Explorerでアクセスしても、正常に動作させることが可能である。


0 件のコメント:

コメントを投稿