标签: onpaste

如何配置Firefox以允许Javascript截取从剪贴板粘贴的值?

当用户从剪贴板粘贴时,我需要过滤掉某些字符.(我实际上并不想修改剪贴板中的内容.)我已经在IE中使用了这个.叹了口气 ......

tl; dr: user.js中的capability.policy项目使其成为prefs.js但未生效.

仅供参考,我可以合理地让所有用户安装user.js的.但是我们都没有管理员访问我们的机器,所以这就是我可以做的关于配置的所有事情.

谢谢你的帮助!

注意:

  1. 出于这个问题的目的,我不想"绕过"访问剪贴板 -
    例如,我不想粘贴发生 对DOM元素的值进行操作
  2. 我不想要一个需要框架/库的解决方案(比如jQuery,Dojo,Prototype,YUI,......)

遵循的步骤

  1. 通过转到以下URL来确定我的个人资料文件夹的位置:support =>个人资料目录=>Open Containing Folder

  2. 试图通过使用以下行创建user.js在Firefox中启用剪贴板:
    user_pref("just.mike", "test to see if user.js works.");
    user_pref("capability.policy.policynames", "allowclipboard");
    user_pref("capability.policy.allowclipboard.sites", "https://my-site.com");
    user_pref("capability.policy.allowclipboard.Clipboard.cutcopy", "allAccess");
    user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess");
    
    注意:https://my-site.com不是真正的网站.

  3. 事实证明,使用about:config不到capability.policy项目- 由于Bugzilla Bug 284673 - about:config隐藏"capability.policy"首选项.但是,我确实认为这些user.js项目"工作"并且文件位于正确的文件夹中,因为之后:
    • about:config显示just.mike条目
    • prefs.js包含所有新行,但顺序不同 - 按字母顺序排列: …

javascript firefox configuration-files windows-vista onpaste

14
推荐指数
1
解决办法
4763
查看次数

jQuery on("paste")第一次没有抓取或传递值

真正的交易问题对我来说,因为我无法解决它.

我写的jQuery脚本应该抓取"粘贴"动作的输入值,并通过ajax将它传递给codeigniter控制器.

它实际上工作正常,但只有我粘贴第二(和更多)时间的值.当我为某些div或其他DOM元素更改("粘贴")到("单击")时,它也可以正常工作.

脚本:

<script type="text/javascript">
$("#link").on("paste", function(){
$("#thumbs").empty().html("<p>loading</p>");
var postData = {
  'url' : $("#link").val()
 }; 

 $.ajax({
     type: "POST",
     url: "/thumb/ajax/",
     data: postData , //assign the var here 
     success: function(msg){
    $("#thumbs").html( "Data Saved: " + msg );
     }

});
Run Code Online (Sandbox Code Playgroud)

});

任何帮助,将不胜感激

编辑:再提示一下.

此特定脚本中的val()实际上在粘贴操作之前获取值.如果我写了一些东西到这个输入,然后删除它并粘贴其他东西,它实际上将传递给控制器​​我写的值,而不是我粘贴的那个.

编辑2:好的,我很确定粘贴的jQuery问题.

<script type="text/javascript">

    $("#link").on("paste", function(){
        $("#thumbs").empty().html("<p>loading</p>");
        var postData = {'url' : $("#link").val() }; 
        $("#thumbs").html($("#link").val());
    });


</script>
Run Code Online (Sandbox Code Playgroud)

此脚本应该从输入到div#thumbs添加值.它不适用于第一个粘贴操作.第二,它确实有效.

编辑3:我的朋友给了我一个提示.on("paste")适用于"粘贴"操作,并且在粘贴实际完成之前.如果有人给我一个提示如何在粘贴之后超时抓取值我可以继续.

jquery onpaste

11
推荐指数
1
解决办法
2万
查看次数

如何在粘贴上获取textarea输入字段的新值?

我看到当我尝试在onpaste调用其函数时从textarea字段读取值时,我得到字段的旧值(粘贴操作之前的值),而不是新值(粘贴操作之后的值).

以下是此行为的演示:http://jsfiddle.net/qsDnr/

代码的副本如下:

<!DOCTYPE html>
<html>
<head>
<title>On Paste</title>
<script type="text/javascript">
var textareaElement;
var previewElement;

function update()
{
    previewElement.innerHTML = textareaElement.value;
}

window.onload = function() {
    textareaElement = document.getElementById('textarea');
    previewElement = document.getElementById('preview');
    textareaElement.onpaste = update    
}
</script>
</head>
<body>
<textarea id="textarea">
</textarea>
<div id="preview">
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

您可以使用以下步骤确认行为.

  1. 将字符串复制foo到剪贴板.
  2. 右键单击textarea字段并选择"粘贴".div元素中没有任何内容.
  3. 右键单击textarea字段并再次选择"粘贴".foo出现在div元素中.

因为我想要的div元素始终显示什么是与粘贴操作textarea元素更新,所需的输出foo,并foo foo在步骤2和步骤分别3.

我设法获得所需输出的一种方法是通过延迟update()函数调用window.setTimeout(),而不是

textareaElement.onpaste = update    
Run Code Online (Sandbox Code Playgroud)

我有

textareaElement.onpaste = function() {
    window.setTimeout(update, …
Run Code Online (Sandbox Code Playgroud)

html javascript dom onpaste

7
推荐指数
1
解决办法
4882
查看次数

如何确定 onChange 事件是否被 onPaste 调用

我有一个与onChange事件相关联的 Javascript 函数。我知道有些浏览器支持onPaste文档或元素级别。有没有办法确定onChange事件是否是由“粘贴”引起的 - 我尝试添加一个在onPaste触发时设置的全局变量,然后在我的onChange例程结束时重置它,但不能保证该onPaste函数得到之前调用onChange

javascript onchange dom-events onpaste

5
推荐指数
1
解决办法
4529
查看次数

如何使用XMLHttpRequest通过copy-n-paste javascript接收php图像数据

我尝试制作类似于GMail使用的图像上传功能.您从桌面复制(CTRL-C)图像并将其粘贴(CTRL-V)到网站上.然后通过XMLHttpRequest将图像上传到处理传入文件的php脚本,其中"处理"意味着重命名并存储在服务器上.

我已经可以获取图像(和-data),但我无法成功提交和接收XMLHttpRequest.我的Javascript代码看起来像这样:

  document.onpaste = function(e){
        var items = e.clipboardData.items;
        console.log(JSON.stringify(items));
        if (e.clipboardData.items[1].kind === 'file') {
            // get the blob
            var imageFile = items[1].getAsFile();
            console.log(imageFile);
            var reader = new FileReader();
            reader.onload = function(event) {
                console.log(event.target.result); // data url!
                submitFileForm(event.target.result, 'paste');
            };
        }
    };

 function submitFileForm(file, type) {
        var formData = new FormData();
        formData.append('file', file);
        formData.append('submission-type', type);

        var xhr = new XMLHttpRequest();
        xhr.open('POST', 'php/image-upload.php');
        xhr.onload = function () {
            if (xhr.status == 200) {
                console.log('all done: ');
            } else {
                console.log('Nope');
            } …
Run Code Online (Sandbox Code Playgroud)

javascript php xmlhttprequest image-uploading onpaste

5
推荐指数
1
解决办法
7505
查看次数

在最初几次尝试中,表的 onpaste/paste 事件不会触发

Google Chrome 特定 - 这是一个内部使用的应用程序,不需要跨浏览器兼容性

请参阅http://jsfiddle.net/spetnik/vpcyt4yv/

我有一个表,我试图在其中粘贴数据。我使单个单元格可以这样选择:

<td tabindex="0">
Run Code Online (Sandbox Code Playgroud)

我最初尝试将 onpaste 事件添加到 TD 元素本身,但这根本不起作用。因此,我将事件添加到表元素中,然后检查以确保焦点元素是 TD,然后将数据粘贴到该元素中:

document.getElementById("tblData").onpaste = function(evt){
    if(document.querySelector(":focus").tagName.toLowerCase() != "td"){
        return;
    }

    document.querySelector(":focus").innerText = evt.clipboardData.getData("text/plain");
};
Run Code Online (Sandbox Code Playgroud)

虽然这基本上有效,但该事件通常不会在第一次尝试时触发。看来我需要a)在表中随机单击几次(每次都不同)或b)将焦点更改到另一个窗口,然后在事件触发之前再次返回。在 jsFiddle 中,我在事件的最开始添加了一个 console.log() 调用,以便我可以准确地看到事件何时在调试窗格中触发。

请参阅上面的 jsFiddle 或仅查看https://jsfiddle.net/spetnik/vpcyt4yv/embedded/result/的结果

javascript events google-chrome onpaste

5
推荐指数
1
解决办法
2221
查看次数

ie10是否支持从剪贴板粘贴图像?

ie10是否支持支持复制和粘贴图像的功能.IE有fileReader api这很好,但是能够粘贴图片会很酷.

javascript html5 onpaste internet-explorer-10

4
推荐指数
1
解决办法
5856
查看次数

如何在WPF文本框中模拟粘贴?

我的WPF应用程序中有一个TextBox,我在其中添加了一个Paste事件:

DataObject.AddPastingHandler(elm, new DataObjectPastingEventHandler(OnPaste));
Run Code Online (Sandbox Code Playgroud)

现在,我想从C#代码触发OnPaste事件。我怎样才能做到这一点?我尝试在控件上调用Paste()函数。文本将粘贴到控件中,但不会触发OnPaste事件。

private static void Foo(TextBox textBox, string pastedText)
{
    Clipboard.SetData(DataFormats.Text, pastedText);
    textBox.Paste();
}
Run Code Online (Sandbox Code Playgroud)

.net c# wpf onpaste

1
推荐指数
1
解决办法
2153
查看次数