代码之家  ›  专栏  ›  技术社区  ›  Razor

javascript上下文菜单单击事件/检测-过滤器粘贴内容

  •  17
  • Razor  · 技术社区  · 14 年前

    脚本:

    Webkit/IE处理得相当好,因为我可以将代码附加到 onpaste Plenty 属于 examples

    在Firefox上无法读取剪贴板内容 (除非有人知道解决方法?)

    歌剧很烦人。我可以设陷阱 班次 + onpaste公司 事件。
    显然,更不用说任何形式的剪贴板交互了。

    我能检测用户是否点击了 paste 在歌剧的上下文菜单里?有没有其他方法来检测事件?


    必须做出选择,我会选择唯一一个试图解决最初的问题,如果这不是一个太多的黑客甚至尝试可能会奏效。

    • 可以捕获正在拖动的内容: mouseup + setTimeout 几乎完美地完成了每一步。
    • 没有闪光灯, 酒吧投票。即使使用flash,它也不是完全的固溶体。太多的努力来支持100%的案例。
    5 回复  |  直到 5 年前
        1
  •  3
  •   Ayaz Alavi    14 年前

    我想指出DOJO菜单小部件,它可以在不同的浏览器中完美地创建上下文菜单。 http://www.dojotoolkit.org/reference-guide/dijit/Menu.html#dijit-menu

    您可以在支持粘贴事件的浏览器中检测粘贴事件,并在不支持此事件的浏览器(如opera)中覆盖上下文菜单。

    一旦你创建了自己的上下文菜单,然后你可以添加复制粘贴菜单项或创建上下文菜单类似的默认使用css。

    有些浏览器可能不允许我们获取剪贴板内容,在这种情况下,我们总是可以恢复到flash以借用跨浏览器的一些功能。请看我在评论中发布的几个链接。

        2
  •  9
  •   Ollie Edwards    14 年前

    我去年碰到过这个。简言之,没有。

    最后,我使用了onchange处理程序,并在内容粘贴到文本框后对其进行过滤。

        3
  •  6
  •   Robert    14 年前

    bind('paste', function() {}); ,比较粘贴前后的字符串并应用格式。

    在IE7/FF3.6/Chrome/Safari 5中测试了以下内容

    $("#textarea").bind('paste', function(e){ 
        // Do whatever you needed to do with the code here.
    });
    

    实例 http://jsfiddle.net/VSrTg/2/

    编辑

    $("#textarea").bind('paste', function(e){ 
        var oldText = this.value;
        setTimeout(function() { 
            // Compare oldText to $("#textarea").val() and format accordingly.
        }, 1000);
    });
    

    编辑2 考虑到你对原帖子的修改,如果你担心 giant market share setInterval() 并将其与自身进行比较。

    最终你的剧本总会有办法的 paste 上面定义的事件。

        4
  •  2
  •   Tim Down    14 年前

    paste 事件是Opera和Firefox2的最新版本。考虑到没有 事件,您需要找到一个替代事件或一组事件来检测上下文菜单中的粘贴 . 您可以为存在的每个事件添加处理程序(我已经这样做了),当用户从上下文菜单触发粘贴时,您只需在相关浏览器中一无所获。

    这只会定期轮询文本输入的值,这是两码事。您可以跟踪按键,并在轮询代码中观察到文本输入的值已通过键盘输入以外的其他方式发生了更改,并进行了区分,但这是不可靠的。

        5
  •  0
  •   user1049064    13 年前

    我对粘贴事件使用setTimeout。但对于上下文菜单,选择“nothing”似乎不起作用(如上所述)。我将mousemove绑定到启动update函数的输入窗体。然后解绑,这样它们就不会堆积起来。

    如果您的表单很小,比如说只有一个输入字段,并且从上下文菜单中选择后鼠标不会落在它上面,请绑定到表单的父级或文档。当然,它必须等待鼠标移动,但这是从上下文菜单中选择后的一般用户操作。