Я пытаюсь выполнить перетаскивание на этом веб-сайте: https://demo.bpmn.io/new
Для этого я использую следующий код JavaScript:
var dataTransfer=
{
dropEffect:'',
effectAllowed:'all',
files:[],
items:{},
types:[],
setData:function(format,data)
{
this.items[format]=data;
this.types.append(format);
},
getData:function(format)
{
return this.items[format];
},
clearData:function(format){}
};
var emit=function(event,target)
{
var evt=document.createEvent('Event');
evt.initEvent(event,true,false);
evt.dataTransfer=dataTransfer;
target.dispatchEvent(evt);
};
function getElementByXpath(path) {return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;};
var DragNDrop=function(src,tgt) {
src = getElementByXpath(src);
tgt = getElementByXpath(tgt);
emit('dragstart',src);
emit('dragenter',tgt);
emit('dragover',tgt);
//Errors start from here
emit('drop',tgt);
emit('dragend',src);
return true;
}
Код долженбыть правильным, так как он работает, когда я использую его для перетаскивания на этом сайте: https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_draganddrop
Проблема в том, что когда я использую его на примере bpmn (https://demo.bpmn.io/new), этоне работает. Вот используемая команда и ее относительные ошибки:
Команда:
DragNDrop('//*[@class="entry bpmn-icon-intermediate-event-none"]', '(//*[starts-with(@data-element-id,"Lane")])[1]');
Ошибки:
TouchInteractionEvents.js: 262 UncaughtTypeError: Не удалось выполнить 'elementFromPoint' для 'Document': предоставленное двойное значение не является конечным.
EventBus.js: 377 TypeError: Не удалось выполнить 'setTranslate' для 'SVGTransform': Предоставленное значение с плавающей точкой не является конечным.
Uncaught TypeError: не удалось выполнить' setTranslate 'для' SVGTransform ': предоставленное значение с плавающей точкой не является конечным.