首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >鼠标点击复制adds标签文本在Chrome中添加相邻的标签文本

鼠标点击复制adds标签文本在Chrome中添加相邻的标签文本
EN

Stack Overflow用户
提问于 2018-03-22 18:26:27
回答 1查看 98关注 0票数 0

新来这里的。我有一个扩展qx.ui.container.Composite的容器,它包含一个网格布局,其中包含x行和4列中的基本标签。列0和2中的文本是静态的,而列1和3中的文本是动态的。

代码语言:javascript
复制
this = qx.ui.container.Composite;
this.setLayout(new qx.ui.layout.VBox());
this._labelContainer = new qx.ui.container.Composite();
this._labelContainer.setLayout(new qx.ui.layout.Grid(30, 3));
this._labelContainer.add(this._createLabel("First Name:", true, false), {row: 1, column: 0});
this._labelContainer.add(this._createLabel(person.firstname, false, true), {row: 1, column: 1});
this._labelContainer.add(this._createLabel("Last Name:", true, false), {row: 1, column: 2});
this._labelContainer.add(this._createLabel(person.lastname, false, true), {row: 1, column: 3});
this._labelContainer.add(this._createLabel("County:", true, false), {row: 2, column: 0});
this._labelContainer.add(this._createLabel(person.address.county, false, true), {row: 2, column: 1});
this._labelContainer.add(this._createLabel("City:", true, false), {row: 2, column: 0});
this._labelContainer.add(this._createLabel(person.address.city, false, true), {row: 2, column: 1});
this.add(this._labelContainer)    

// Member function
_createLabel: function(text, bold, selectable) {
    var ret = new qx.ui.basic.Label(text);
    if (bold) ret.setFont("bold");
    if (selectable) ret.setSelectable(true);
    return ret;
}

问题:当我通过双击或三击鼠标从一个标签复制文本时,标签文本和相邻标签的文本都被复制到剪贴板上。这将复制相邻的标签文本,无论它是否设置为可选的。鼠标拖动/选择/复制工作,但这并不满足客户端的要求。我只在Chrome ~ v63中经历过这种情况,在火狐(IE,Edge是未知的)中从未发生过这种情况。Qooxdoo v5.x

我到处都找遍了(qooxdoo论坛,bug报告,Chrome bug报告,所以.)也没有遇到任何报告说遇到过这个问题的人。有谁遇到过这个问题,或者有什么见解可以分享,这可能有助于“qooxdoo方式”?

EN

回答 1

Stack Overflow用户

发布于 2018-03-26 07:01:06

我可以想象,这只是Chrome选择文本的一个奇怪之处--每个标签都是独立的<div>'s,而Chrome选择将它们结合在一起进行选择(尽管两者之间还有其他div没有被选中)。你只需点击和移动鼠标,而不是双击就可以选择想要的内容。

但是,关于示例代码,我要指出的一点是,您不应该为this赋值;看起来您正在尝试编写一个类,但是在you中这样做的正确方法是使用qx.Class.define(...)

例如:

代码语言:javascript
复制
qx.Class.define("my.MyClass", {
  extend: qx.ui.container.Composite,

  construct: function() {
    this.base(arguments);
    this.setLayout(new qx.ui.layout.VBox());
    this._labelContainer = new qx.ui.container.Composite();
    this._labelContainer.setLayout(new qx.ui.layout.Grid(30, 3));
    this._labelContainer.add(this._createLabel("First Name:", true, false), {row: 1, column: 0});
    this._labelContainer.add(this._createLabel(person.firstname, false, true), {row: 1, column: 1});
    this._labelContainer.add(this._createLabel("Last Name:", true, false), {row: 1, column: 2});
    this._labelContainer.add(this._createLabel(person.lastname, false, true), {row: 1, column: 3});
    this._labelContainer.add(this._createLabel("County:", true, false), {row: 2, column: 0});
    this._labelContainer.add(this._createLabel(person.address.county, false, true), {row: 2, column: 1});
    this._labelContainer.add(this._createLabel("City:", true, false), {row: 3, column: 0});
    this._labelContainer.add(this._createLabel(person.address.city, false, true), {row: 3, column: 1});
    this.add(this._labelContainer)    
  },

  members: {
    _createLabel: function(text, bold, selectable) {
        var ret = new qx.ui.basic.Label(text);
        if (bold) ret.setFont("bold");
        if (selectable) ret.setSelectable(true);
        return ret;
    }    
  }
});

var comp = new my.MyClass();
doc.add(comp, { left: 100, top: 100 });

此外,在为其他人编写示例时,能够在for游乐场(http://www.qooxdoo.org/devel/playground/)中勾勒出您的示例是非常有用的--这允许您为人们提供一个关于您问题的即时可复制示例。

下面是示例的游乐场版本:操场实例

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49435945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档