传单中未触发 oncopy 事件
oncopy event not fired in leaflet
我想捕捉当用户按下 Ctrl+C 时触发的复制事件。由于某些原因,当用户与地图交互时它不会被触发。
我试过自动将焦点设置在 #map div 上,但没有用。
这是获取 oncopy 事件的 div 的工作示例 http://jsfiddle.net/669a62dn/ document.getElementById('map').addEventListener('copy', function (e) {
console.log(e);
});
这是一张不起作用的地图:http://jsfiddle.net/b4ueu63f/
感谢任何帮助。
谢谢!
它适用于输入元素。
看,我分叉了 jsBin
<input id='clipboard' value="HELLO WORLD!">
<div id="log"></div>
脚本
document.getElementById('clipboard').addEventListener('copy', function (e) {
document.getElementById('log').innerHTML += e;
});
但是“客户端复制 id="map"”是什么意思?
您说“当用户与地图交互时不会触发[复制事件]。”
但是,它对我有用。如果我 select 地图底部的 Leaflet | © OpenStreetMap contributors
文本并按 Ctrl-C,将触发一个事件。
可能在测试时,您没有 select 复制任何东西,因此,当您尝试复制时,没有任何反应,因为什么都没有 selected。
我认为这里的问题可能是地图本身无法select编辑,因此无法复制,只有地图中的文字div可以。这意味着复制事件处理程序的行为可能与您预期的不同。
您似乎无法在地图上触发 copy
事件。
但是你可以像这样欺骗地图:
- 添加将包含要复制的所需数据的输入。
- 点击地图:将数据添加到输入并关注它。
- 然后您可以在此元素上使用
copy
事件。
示例:http://jsfiddle.net/j381ybe1/
唯一的变化是 copy
事件在 input
元素上触发,当您单击地图时,您会在输入中插入一些文本。
我在这里找到了解决方案,但在用 js 翻译咖啡脚本时遇到了一些问题,主要是因为我是新手。
How does Trello access the user's clipboard?
var clipboardCont = L.DomUtil.get('clipboard-container');
L.DomUtil.setStyle(clipboardCont, 'display', 'inline');
var textArea = L.DomUtil.get('clipboard');
textArea.focus();
textArea.select();
最后成功了。感谢您的回答
我想捕捉当用户按下 Ctrl+C 时触发的复制事件。由于某些原因,当用户与地图交互时它不会被触发。 我试过自动将焦点设置在 #map div 上,但没有用。
这是获取 oncopy 事件的 div 的工作示例 http://jsfiddle.net/669a62dn/ document.getElementById('map').addEventListener('copy', function (e) {
console.log(e);
});
这是一张不起作用的地图:http://jsfiddle.net/b4ueu63f/
感谢任何帮助。 谢谢!
它适用于输入元素。
看,我分叉了 jsBin
<input id='clipboard' value="HELLO WORLD!">
<div id="log"></div>
脚本
document.getElementById('clipboard').addEventListener('copy', function (e) {
document.getElementById('log').innerHTML += e;
});
但是“客户端复制 id="map"”是什么意思?
您说“当用户与地图交互时不会触发[复制事件]。”
但是,它对我有用。如果我 select 地图底部的 Leaflet | © OpenStreetMap contributors
文本并按 Ctrl-C,将触发一个事件。
可能在测试时,您没有 select 复制任何东西,因此,当您尝试复制时,没有任何反应,因为什么都没有 selected。
我认为这里的问题可能是地图本身无法select编辑,因此无法复制,只有地图中的文字div可以。这意味着复制事件处理程序的行为可能与您预期的不同。
您似乎无法在地图上触发 copy
事件。
但是你可以像这样欺骗地图:
- 添加将包含要复制的所需数据的输入。
- 点击地图:将数据添加到输入并关注它。
- 然后您可以在此元素上使用
copy
事件。
示例:http://jsfiddle.net/j381ybe1/
唯一的变化是 copy
事件在 input
元素上触发,当您单击地图时,您会在输入中插入一些文本。
我在这里找到了解决方案,但在用 js 翻译咖啡脚本时遇到了一些问题,主要是因为我是新手。 How does Trello access the user's clipboard?
var clipboardCont = L.DomUtil.get('clipboard-container');
L.DomUtil.setStyle(clipboardCont, 'display', 'inline');
var textArea = L.DomUtil.get('clipboard');
textArea.focus();
textArea.select();
最后成功了。感谢您的回答