在 dojo.dnd 中禁用复制

Posted

技术标签:

【中文标题】在 dojo.dnd 中禁用复制【英文标题】:Disabling copying in dojo.dnd 【发布时间】:2011-01-04 16:07:56 【问题描述】:

默认情况下,dojo.dnd.Source 容器允许您按住 Ctrl 来复制/复制拖动的项目,而不仅仅是移动它。

我知道您可以设置singular=true 来停止拖动多个项目,但我如何停止复制?在我的项目的上下文中复制项目没有任何意义(我正在制作一个可拖动的列表以重新排序网站菜单上的页面)。

谢谢

【问题讨论】:

【参考方案1】:

我不确定是否有更好的方法,但我总是通过破坏 Source 实例上的 copyState 方法以始终返回 false 来实现这一点。

如果您在页面上有多个来源,您还可以选择 dojo.declare 覆盖该方法的子类,或选择 dojo.extend dojo.dnd.Source 本身以在所有情况下破坏该方法。

【讨论】:

顺便说一句,这是官方认可的方法。 ;-)【参考方案2】:

或第二个选项

dojo.addOnLoad(function()

    //Disable the key events Ctrl and Shift
    dojo.extend( dojo.dnd.Source,  copyState: function( keyPressed, self ) 
        return false; 
    );

    //Create the dnd source object for data point column bar
    columnBar = new dojo.dnd.Source("viewColumnBar", singular: true );

);

【讨论】:

【参考方案3】:

感谢 Ken Franquiero,我设法解决了这个问题。对于同一条船上的其他人,这是我的代码:

/**
 * Extend dojo.dnd.Source to prevent copying
 */

dojo.require( 'dojo.dnd.Source' );
dojo.addOnLoad( function() 

    dojo.declare
    (
        'EditPosition',
        dojo.dnd.Source,
        
            copyState: function( keyPressed, self )
            
                return false;
            
        
    );

    oEditPosition = new EditPosition
    ( 
        'position_container', 
        
            withHandles: 'true'
         
    );

 );

html

<div id="position_container">
    <div class="dojoDndItem">
        <div class="dojoDndHandle drag_icon drag_handle"></div> <strong>Short Paragraphs</strong>
    </div>
    <div class="dojoDndItem">
        <div class="drag_icon fixed_handle"></div> About Us
    </div>
    <div class="dojoDndItem">
        <div class="drag_icon fixed_handle"></div> Team Members
    </div>
</div>

【讨论】:

以上是关于在 dojo.dnd 中禁用复制的主要内容,如果未能解决你的问题,请参考以下文章

在 HTML 输入字段中禁用复制粘贴? [复制]

在 QLPreviewController 中禁用复制操作

在本机反应中禁用复制/粘贴选项

在 UITextView 中禁用复制功能不起作用

为啥没有在请求正文中发送禁用的输入字段? [复制]

如何禁用日历中的未来日期? [复制]