我跟随Chris Saintys的拖放演示,这非常聪明。源代码可以从他的git下载。我添加了polyfill以使该示例在移动设备上运行。
<script id="DragDropTouch" src="https://bernardo-castilho.github.io/DragDropTouch/DragDropTouch.js"></script>
我使用Conveyor在手机上调试拖放,一切都很好(IOS手机上的Safari和Chrome)。不幸的是,如果我将演示升级到。NET 6.0。NET Core 3.0的CCD_ 1和CCD_。奇怪的是,即使在移动设备上,blazor上的事件被忽略,它们仍然由javascript引发。因此,polyfill仍在工作。
例如,在移动设备上,以下javascriptdragstart正在启动
document.addEventListener('dragstart', function(ev) {
if (ev.target.classList.contains('draggable')) {
console.log('dragging');
} else {
console.log('ignoring draggable');
}
});
以下blaordragstart被忽略
<li class="draggable" draggable="true" title="@JobModel.Description" @ondragstart="@(() => HandleDragStart(JobModel))" >
<p class="description">@JobModel.Description</p>
<p class="last-updated"><small>Last Updated</small> @JobModel.LastUpdated.ToString("HH:mm.ss tt")</p>
</li>
@code {
[CascadingParameter] JobsContainer Container { get; set; }
[Parameter] public JobModel JobModel { get; set; }
private void HandleDragStart(JobModel selectedJob)
{
Container.Payload = selectedJob;
}
}
升级可能导致此行为的原因。NET版本?
请注意在两者的桌面版本上,一切都非常好。NET 6.0和。NET Core 3.0。
编辑:我添加了一些存储库来演示这个问题。
这是polyfill。修复。NET 6.0可以在这里找到:#41394(评论)