Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 要使onpaste工作,需要在窗口内单击_Javascript_Html_Javascript Events_Dynamic Html - Fatal编程技术网

Javascript 要使onpaste工作,需要在窗口内单击

Javascript 要使onpaste工作,需要在窗口内单击,javascript,html,javascript-events,dynamic-html,Javascript,Html,Javascript Events,Dynamic Html,其思想是在页面级别处理粘贴事件(与在单个输入字段/元素级别处理它相反)。解决方案是将粘贴事件处理程序绑定到顶级div元素 问题在于,在开始触发粘贴事件之前,用户必须在页面第一次加载后(即使浏览器窗口本身处于焦点位置),首先实际单击浏览器窗口中的任何位置 问题是:如何使页面对粘贴敏感而无需此步骤(即必须在窗口内单击)? 我尝试过但不起作用的技术: 在加载时以编程方式集中外部div(参见下面的js代码) 在加载时以编程方式单击外部div(参见下面的js代码) 注意:我的实际项目是一个相当复杂的有

其思想是在页面级别处理粘贴事件(与在单个输入字段/元素级别处理它相反)。解决方案是将粘贴事件处理程序绑定到顶级div元素

问题在于,在开始触发粘贴事件之前,用户必须在页面第一次加载后(即使浏览器窗口本身处于焦点位置),首先实际单击浏览器窗口中的任何位置

问题是:如何使页面对粘贴敏感而无需此步骤(即必须在窗口内单击)?

我尝试过但不起作用的技术:

  • 在加载时以编程方式集中外部div(参见下面的js代码)
  • 在加载时以编程方式单击外部div(参见下面的js代码)
注意:我的实际项目是一个相当复杂的有角度的网页,幸运的是,我能够使用纯HTML/javascript复制该行为

注意:div上的粘贴事件似乎只在Chrome中起作用。所以不要在MSIE或FF中尝试此功能。不过,跨浏览器支持是另一个我想单独解决的问题

测试html页面以复制问题:

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>paste test</title>

    <style type="text/css">
        html, body {
            padding: 0;
            margin: 0;
            height: 100%;
        }

        div#outer {
            margin: auto;
            height: 100%;
            padding: 20px;
            background-color: whitesmoke;
            box-sizing: border-box;
        }

        div#inner {
            margin: auto;
            margin-top: 20px;
            padding: 20px;
            width: 500px;
            height: 500px;
            border: solid 3px green;
        }
    </style>
</head>

<body onload="load()">


    <div id="outer" onpaste="paste()" tabindex="1">

        First click anywhere to make the paste work.

        <div id="inner">

            Just any content.
            Not important for example.

        </div>

    </div>


    <script type="text/javascript">


        function load() {

            document.getElementById('outer').focus();
            document.getElementById('outer').click();
        }

        function paste() {

            alert('paste');
        }

    </script>

</body>

</html>

粘贴试验
html,正文{
填充:0;
保证金:0;
身高:100%;
}
外分区{
保证金:自动;
身高:100%;
填充:20px;
背景色:白烟;
框大小:边框框;
}
内分区{
保证金:自动;
边缘顶部:20px;
填充:20px;
宽度:500px;
高度:500px;
边框:实心3px绿色;
}
首先单击任意位置使粘贴生效。
任何内容都可以。
例如,这并不重要。
函数加载(){
document.getElementById('outer').focus();
document.getElementById('outer')。单击();
}
函数粘贴(){
警报(“粘贴”);
}

嗨!你能解决这个问题吗?我现在也有同样的毛病。嗨!你能解决这个问题吗?我现在也有同样的问题。