Liferay 拖动-&-使用触摸式笔记本电脑/屏幕时,drop and Dockbar菜单在Chrome中不起作用

Liferay 拖动-&-使用触摸式笔记本电脑/屏幕时,drop and Dockbar菜单在Chrome中不起作用,liferay,liferay-6,Liferay,Liferay 6,我一直在使用Liferay 6.2.1 CE GA2,这两个版本都可以在Chrome中复制(仅限)。我还验证了,您将发现上述两个问题已在最新的Liferay 6.2.5 CE GA6上得到解决。我进一步深入研究,发现这些问题主要是在Liferay 6.2.2 CE GA3中解决的 我的问题是,我无法找到修复这些问题的相关票证,因为我只需要这些修复(无法升级)。如果有人能指出确切的车票,那就太感谢了 非常感谢。经过大量的研究和代码调试,我已经能够解决这两个问题。 我想在这里分享我的发现,因为这可能

我一直在使用
Liferay 6.2.1 CE GA2
,这两个版本都可以在Chrome中复制(仅限)。我还验证了,您将发现上述两个问题已在最新的
Liferay 6.2.5 CE GA6
上得到解决。我进一步深入研究,发现这些问题主要是在
Liferay 6.2.2 CE GA3
中解决的

我的问题是,我无法找到修复这些问题的相关票证,因为我只需要这些修复(无法升级)。如果有人能指出确切的车票,那就太感谢了


非常感谢。

经过大量的研究和代码调试,我已经能够解决这两个问题。 我想在这里分享我的发现,因为这可能对其他人有所帮助

  • 无法拖放portlet:
  • 修复:将alloy-zip(
    \portal-web\third-party\alloy-2.0.0.zip
    )升级到
    2.0.0.37
    或更高版本可解决此问题。因为,这是在
    Liferay 6.2 GA2-GA6
    之间对zip进行的唯一一次小升级

    二,。Dockbar菜单不可单击:

    修复:通过以下自定义javascript破解解决了此问题:

    var isOpera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
    var isChrome = !!window.chrome && !isOpera;
    
    /* Run code, if application is running on touch device with chrome */
    if(isTouchDevice() && isChrome){
        var docbar_dropdowns = 
            document.querySelectorAll('li.admin-links, li.my-sites, li.user-avatar');
    
        /* Attach click event */
        if(docbar_dropdowns.length > 0){    
            for(var d = 0; d < docbar_dropdowns.length; d++){
                docbar_dropdowns[d].addEventListener("click", toggleMenu, false);
            }
        }
    
        /* Toggle menu on click */
        var elementId = null;
        function toggleMenu(event){
            event.stopPropagation();
            if(elementId != null && elementId != this.id)
                hideMenu();
    
            elementId = this.id;
    
            if(this.children[1].style.display == "block"){
                this.classList.remove("open");
                this.children[1].style.display = "none";
            }else{
                this.classList.add("open");
                this.children[1].style.display = "block";
            }
        }
    
        /* Hide previously opened menu */
        function hideMenu(){
            for(var d = 0; d < docbar_dropdowns.length; d++){
                docbar_dropdowns[d].classList.remove("open");
                docbar_dropdowns[d].children[1].style.display = 'none';
            }
        }
    
        document.body.addEventListener("click", hideMenu, false);
    }
    
    /* Detect touch device */
    function isTouchDevice() {
        return (('ontouchstart' in window)
        || (navigator.MaxTouchPoints > 0)
        || (navigator.msMaxTouchPoints > 0));
    }
    
    var isOpera=!!window.opera | | navigator.userAgent.indexOf('OPR/')>=0;
    var isChrome=!!window.chrome&!等轴虫;
    /*运行代码,如果应用程序在使用chrome的触摸设备上运行*/
    if(isTouchDevice()&&isChrome){
    变量docbar_下拉列表=
    document.querySelectorAll('li.admin-links,li.my-sites,li.user-avatar');
    /*附加单击事件*/
    如果(docbar_dropdowns.length>0){
    对于(var d=0;d0)
    ||(navigator.msmax触点>0));
    }
    

    注意:在我们的环境中,这两个问题仅在chrome on touch设备上/在touch笔记本电脑上使用鼠标时可再现。

    “不工作”不是一个很好再现的错误描述。。。感谢您尝试GA6-这将是我的第一个建议。由于很难复制(特别是没有触摸屏,因为它似乎与此相关),屏幕录制可能是个好主意。@OlafKock,是的。对不起,不知道。反问题,因为您无法升级:您如何处理自旧版本以来已修复的安全问题?你自己把它们运回来了吗?这段时间最好是升级到最新版本。是的,我们正在使用社区版本并自行修复问题。