PDFTron Webviewer - перетаскивание миниатюр
В PDFTron Viewer 2.2.2 мы добавили перетаскивание миниатюр для перемещения страниц.
Но в 3.0.1 и 3.1.0 это невозможно. Вы блокируете события перетаскивания? (все браузеры затронуты)
вот код в нашем config.js
$uidisplay = $("#ui-display");
$uidisplay.on("dragstart", function(event) {
try{
if($.type(event.originalEvent.dataTransfer)!="undefined"){
event.originalEvent.dataTransfer.setData("text","");
event.originalEvent.dataTransfer.setDragImage(dragImg, 10, 10);
}
}
catch (e) {
e.message;
}
$dragCanvas = _createCanvas();
$thumbnailsPane.scroll(_paneOnScroll);
$(".ui-state-selected",$thumbnailsPane).css({"opacity" : "0.4"});
});
$uidisplay.on("dragover", function(event) {
var $context = event.target==$thumbnailsPane.get(0) ? $(event.target) : $(event.target).parents("#thumbnailView");
var changeClass = false;
if($context.length){
changeClass = _setOnDragSelector(event.originalEvent ? event.originalEvent : event);
if(event.target==$thumbnailsPane.get(0)){
changeClass = false;
_scrollViewPane(event);
}
}
if(!changeClass){
$(".ui-state-drag-enter-left",$thumbnailsPane).removeClass("ui-state-drag-enter-left");
$(".ui-state-drag-enter-right",$thumbnailsPane).removeClass("ui-state-drag-enter-right");
}
if((ondragCount++)%10==0){
//console.log("ondragCount");
$dragCanvas.css({'top' : (event.originalEvent.clientY + 10) + "px", 'left' : (event.originalEvent.clientX + 10) + "px"});
}
});
$uidisplay.on("dragend", function(event) {
//console.log("dragend : " + $(event.target).prop("tagName"));
onScrollCount = 0;
ondragCount = 0;
$dragCanvas.remove();
$dragCanvas = null;
var $target = $(".ui-state-drag-enter-left,.ui-state-drag-enter-right");
if($target.length && $target.hasClass("thumbContainer") && Number($thumbnailsPane.attr("drag-enter-id"))>=0){
_movePages();
}else{
_endOnDragSelector();
}
});
1 ответ
Похоже, это происходит из-за кода, который был добавлен в WebViewer для предотвращения перемещения страницы при использовании средства просмотра на рабочем столе с сенсорным экраном.
Один из способов обойти это поведение - переключиться на инструмент "Панорамирование" при наведении курсора на миниатюры и вернуться назад при возврате к документу. Это работает, потому что инструмент Pan не имеет того же кода предотвращения событий. Вот код, который вы можете добавить в свой конфигурационный файл:
$(document).on('documentLoaded', function() {
var oldToolMode;
$('#thumbnailView').on('mouseenter', function() {
oldToolMode = readerControl.getToolMode();
readerControl.setToolMode('Pan');
});
$('#thumbnailView').on('mouseleave', function() {
readerControl.setToolMode(oldToolMode);
});
});