现象:
在列表视图中,当你要复制一个内容,就触发click事件,就打开form视图了
为了区分click mousedown mousemove muuseup 事件,从而放弃click事件
用后面那几个事件组合来解决是要打开,还是复制内容事件

改动代码如下:
\addons\web\static\src\js\view_list.js

var hasMove =false;
        this.$current = $('<tbody>')
            .delegate('input[readonly=readonly]', 'click', function (e) {
                /*
                    Against all logic and sense, as of right now @readonly
                    apparently does nothing on checkbox and radio inputs, so
                    the trick of using @readonly to have, well, readonly
                    checkboxes (which still let clicks go through) does not
                    work out of the box. We *still* need to preventDefault()
                    on the event, otherwise the checkbox's state *will* toggle
                    on click
                 */
                e.preventDefault();
            })
            .delegate('th.oe_list_record_selector', 'click', function (e) {
                e.stopPropagation();
                var selection = self.get_selection();
                var checked = $(e.currentTarget).find('input').prop('checked');
                $(self).trigger(
                        'selected', [selection.ids, selection.records, ! checked]);
            })
            .delegate('td.oe_list_record_delete button', 'click', function (e) {
                e.stopPropagation();
                var $row = $(e.target).closest('tr');
                $(self).trigger('deleted', [[self.row_id($row)]]);
            })
            .delegate('td.oe_list_field_cell button', 'click', function (e) {
                e.stopPropagation();
                var $target = $(e.currentTarget),
                      field = $target.closest('td').data('field'),
                       $row = $target.closest('tr'),
                  record_id = self.row_id($row);
               
                if ($target.attr('disabled')) {
                    return;
                }
                $target.attr('disabled', 'disabled');

// note: $.data converts data to number if it's composed only
                // of digits, nice when storing actual numbers, not nice when
                // storing strings composed only of digits. Force the action
                // name to be a string
                $(self).trigger('action', [field.toString(), record_id, function (id) {
                    $target.removeAttr('disabled');
                    return self.reload_record(self.records.get(id));
                }]);
            })
            .delegate('a', 'click', function (e) {
                e.stopPropagation();
            })
           .delegate('tr', 'mousedown', function (e) {

if (e.button ==0){
                   hasMove=false;
                }else {
                   hasMove=true;
                }

})

.delegate('tr', 'mousemove', function (e) {

hasMove=true;
            })

.delegate('tr', 'mouseup', function (e) {

if (hasMove || (e.srcElement.type && e.srcElement.type=='checkbox')){

}else{
                var row_id = self.row_id(e.currentTarget);
                if (row_id) {
                    e.stopPropagation();
                    if (!self.dataset.select_id(row_id)) {
                        throw new Error(_t("Could not find id in dataset"));
                    }
                    self.row_clicked(e);
                }
                }
                hasMove =false;
            });

====================================
上面是一种解决方案,但当ommousemove 事件,移动鼠标触发事件过多,导致客户端会死掉,最终用下面的方法
得到较好的解决
当鼠标移动时,有复制到内容,则不进入详细面,判断没有内容来决定:

\addons\web\static\src\js\view_list.js

.delegate('tr', 'click', function (e) {

var txt = window.getSelection?window.getSelection():document.selection.createRange().text;
                if (txt!=''){
                  e.stopPropagation();

}else{

var row_id = self.row_id(e.currentTarget);
                    if (row_id) {
                        e.stopPropagation();
                        if (!self.dataset.select_id(row_id)) {
                            throw new Error(_t("Could not find id in dataset"));
                        }
                        self.row_clicked(e);
                    }
                }

});

转载于:https://www.cnblogs.com/toby2chen/p/8177267.html

(59) 解决在列表视图复制导致打开详细内容相关推荐

  1. 通过代码解决SharePoint列表视图权限分配问题

    最近被SharePoint列表视图分权限的问题困扰着,在网上搜到些解决方案,比较不错的是Bewise.SharePoint.SPViewPermissionSetting的解决方案,但是在修改视图权限 ...

  2. drop 很慢 物化视图_终于解决了物化视图复制的问题

    今天真是个高兴的日子.刚回到公司就被技术总监拉了过去,给我展示研发的最近成果.好久没看到他如此轻松的神情,因为就在今天,一个关键的技术问题 -- 物化视图 materialized view--被他搞 ...

  3. odoo10参考系列--视图一(列表视图)

    共同结构--一般视图都有的 视图对象公开了多个字段,除非另有说明,否则它们是可选的. name (强制性的) 在对某个列表进行查找时,仅作为对视图的一种记忆/描述是有用的 model 与视图关联的模型 ...

  4. 【记录】IDEA未正确关闭导致打开报错,进不了主界面,含解决办法

    [记录]IDEA未正确关闭导致打开报错,进不了主界面,含解决办法 错误提示 解决方案 参考 错误提示 截取了错误的主要部分 java.util.concurrent.CompletionExcepti ...

  5. 解决Windows资源管理器右键菜单打开EditPlus容易导致资源管理器无响应问题

    解决Windows资源管理器右键菜单打开EditPlus容易导致资源管理器无响应问题 参考文章: (1)解决Windows资源管理器右键菜单打开EditPlus容易导致资源管理器无响应问题 (2)ht ...

  6. Pycharm打开Project(工程)时停留在preparing workspace时间过长,导致打开很慢的解决方法...

    Pycharm打开Project(工程)时停留在preparing workspace时间过长,导致打开很慢的解决方法- 昊虹君用Pycharm进行Python的开发,一直用得好好的,也没作过什么异常 ...

  7. ODPS主备集群双向数据复制导致主备中心网络打爆问题

    简介:ODPS主备集群双向数据复制导致主备中心网络打爆问题 1. 故障问题描述 客户现场发生了ODPS主备机房相互数据全量复制导致的主备中心网络被打爆的问题,严重影响了日常运行的ODPS任务.在ODP ...

  8. android 复杂的列表视图新写法MultiType

    从前,比如我们写一个类似微博列表页面,这样的列表是十分复杂的:有纯文本的.带转发原文的.带图片的.带视频的.带文章的等等,甚至穿插一条可以横向滑动的好友推荐条目.不同的 item 类型众多,而且随着业 ...

  9. 解决MySQL事务未提交导致死锁报错 避免死锁的方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/xuheng8600/article/d ...

最新文章

  1. Oracle procedure
  2. php facade模,PHP 设计模式之外观模式 Facade
  3. linux boost内存池,C++ boost库教程之内存池
  4. perl学习之:localtime
  5. 摆脱科技僵尸,回归生龙活虎
  6. Falsk session 源码解析
  7. 【职场】高薪的条件你满足几条?
  8. Mybatis 原始Dao层开发
  9. 太惨了!卖一个月不如小米卖一天,手机一哥仍不甘心
  10. 是谁逼着我们996,逼着企业996
  11. 前端实习4个月的心得(uniapp)
  12. 浏览器禁用第三方Cookie
  13. 检索网络方向的学生选修先行课为计算机网络,等价的关系代数表达式,其执行效率也是一样的。...
  14. yum源解释(接地气)
  15. 【UE4】导入FBX格式的模型至UE4
  16. EXCEL横向表格如何调整为纵向表格?
  17. 十分钟了解物联网主流通信协议
  18. 【工作日记】这一年来完全用Linux工作的感受
  19. A hard puzzle(HDU1097)(快速幂取模)
  20. 考研计算机C语言算法视频,计算机算法考研视频哪个好

热门文章

  1. Android]Android字体高度的研究
  2. no signatures that match those in shared user android.uid.system; ignoring!
  3. 【Android】安装时, 先拷so主目录(当前设备相关),再拷so次目录,不重复拷贝 (armeabi/armeabi-v7a) arm-v7不兼容arm-v5
  4. Flutter 中的Error的捕获及处理
  5. [转]linux下TCP连接占用的资源
  6. 用maven搭建 testNG+PowerMock+Mockito测试框架
  7. find 命令的参数详解
  8. LUA 拾遗(编译-调试-运行)
  9. silverlight mediaElement 动态添加source
  10. Eclipse创建JavaWeb工程