不久前我问过这个问题,关于如何在浏览器内联显示的 PDF 上绘制坐标。
@UselessCode 对他们的回复很有帮助,将我指向pdf.js并提供了如何记录拖动到页面上的框的坐标的现场演示。
我一直在我的页面上对此进行试验,并且在显示 PDF 的画布元素上遇到了 mouseup 事件的一些问题。在此示例中,您可以看到 mousedown 事件与 mousemove 事件一起触发,但不是 mouseup 事件。
$(function () {
"use strict";
var startX,
startY,
selectedBoxes = [],
$selectionMarquee = $('#selectionMarquee'),
$allCords = $('#all-cords'),
positionBox = function ($box, coordinates) {
$box.css(
'top', coordinates.top
).css(
'left', coordinates.left
).css(
'height', coordinates.bottom - coordinates.top
).css(
'width', coordinates.right - coordinates.left
);
},
compareNumbers = function (a, b) {
return a - b;
},
getBoxCoordinates = function (startX, startY, endX, endY) {
var x = [startX, endX].sort(compareNumbers),
y = [startY, endY].sort(compareNumbers);
return {
top: y[0],
left: x[0],
right: x[1],
bottom: y[1]
};
},
trackMouse = function (event) {
var position = getBoxCoordinates(startX, startY, event.pageX, event.pageY);
console.log(position);
positionBox($selectionMarquee, position);
},
displayCoordinates = function () {
var msg = 'Boxes so far:\n';
selectedBoxes.forEach(function (box) {
msg += '<li>(' + box.left + ', ' + box.top + ') - (' + (box.left + box.right) + ', ' + (box.top + box.bottom) + ')</li>';
});
$allCords.html(msg);
};
$('#the-canvas').on('mousedown', function (event) {
startX = event.pageX;
startY = event.pageY;
positionBox($selectionMarquee, getBoxCoordinates(startX, startY, startX, startY));
$selectionMarquee.show();
$(this).on('mousemove', trackMouse);
}).on('mouseup', function (event) {
var position,
$selectedBox;
$selectionMarquee.hide();
position = getBoxCoordinates(startX, startY, event.pageX, event.pageY);
if (position.left !== position.right && position.top !== position.bottom) {
$selectedBox = $('<div class="selected-box"></div>');
$selectedBox.hide();
$('body').append($selectedBox);
positionBox($selectedBox, position);
$selectedBox.show();
selectedBoxes.push(position);
displayCoordinates();
$(this).off('mousemove', trackMouse);
}
});
});
我玩过这个,当我向画布添加绝对或固定定位时,似乎触发了 mouseup 事件,但是之后 mousemove 事件不会触发。
我很抱歉为此提出一个单独的问题,但我试图恢复我之前的问题无济于事,而且我真的坚持我的项目,直到我可以让这部分工作!