我看到剑道 UI 发生了一件非常奇怪的事情kendoUpload
。我已经实现了一个自定义 UI 来显示正在上传的文件,以及一个进度条和一个取消按钮。Kendo 不提供用于取消上传的 API,但我在这里读到,您可以点击 kendo 的默认上传进度显示来取消上传。这正是我所做的,在我的自定义取消按钮上附加了以下 javascript 函数:
var fileName = _getFileNameForThisCancelButton();
var kendoUpload = $('#file_upload').data('kendoUpload');
if (kendoUpload) {
var cancelButton = kendoUpload.wrapper.find('ul.k-upload-files')
.find('.k-file:has([title="' + fileName + '"]) .k-cancel');
cancelButton.click();
}
这个小功能在触发kendoUpload
' 取消事件时起作用,并且网络流量停止,因此数据显然不再从浏览器发送到服务器。
但是,只要单击一个取消按钮,从单击取消按钮的浏览器对站点的任何后续请求都会永远挂起。请注意,这适用于整个网站,而不仅仅是文件上传页面,而且仅适用于相关浏览器——该网站仍会在未点击上传取消按钮的其他浏览器中加载。这适用于 Chrome 30.0.1599.69 m、Firefox 20.0 和 IE8。
使用 Firefox 和 IE,只需关闭并重新启动浏览器即可停止挂起,并再次加载站点。使用 Chrome,我发现这不起作用,注销我的本地计算机也不起作用——我必须完全重新启动才能让网站在 Chrome 中再次加载。我认为这可能与我的 Chrome 设置有关。我已将其设置为在重新打开时加载我最后的所有选项卡,并且我注意到关闭和重新打开 Chrome 也不会删除我的网站登录 cookie。无论哪种方式,即使在 Chrome 中更难重置也是同样的问题。
所以......有什么想法吗?似乎浏览器仍在等待来自服务器的响应以取消上传并阻塞整个站点,等待永远不会传递的响应。
更新
事实证明我对 Chrome 的看法是正确的。禁用“从上次中断的地方继续”启动选项后,Chrome 现在的行为与 FF 和 IE 相同——需要关闭并重新打开浏览器才能再次加载网站。
showFileList: false
我也在没有自定义 UI 的情况下尝试过这个,这意味着我在创建小部件时关闭并单击了实际的取消按钮。开始怀疑这是否与服务器上的 POST 方法有关...?