我注意到当我单击 PDF 按钮时,下载 PDF 需要一些时间。有什么我可以为它创建一个 eventListener 的吗?所以我可以开始和结束一个微调器。这在 iPad 上确实是一个问题,它需要更长的时间......但至少有 30-50 秒waiting for xep.cloudformatter...
才能出现。
或者还有什么我可以做的。
我注意到当我单击 PDF 按钮时,下载 PDF 需要一些时间。有什么我可以为它创建一个 eventListener 的吗?所以我可以开始和结束一个微调器。这在 iPad 上确实是一个问题,它需要更长的时间......但至少有 30-50 秒waiting for xep.cloudformatter...
才能出现。
或者还有什么我可以做的。
更新:我在核心代码中添加了一个事件“xepOnlineStatus”。它为状态设置一个参数,并在格式化开始和结束时触发。这些状态是“开始”和“完成”。您现在可以实现一个像下面这样的简单 JS,它将使用相同的微调器处理这些事件。网站主JS更新,Github代码即将更新。
您可以在这里看到它的实际效果:http: //www.cloudformatter.com/CSS2Pdf,只需格式化为 PDF 即可启用微调器。
document.observe('dom:loaded', function() {
jQuery(document).on("xepOnlineStatus", function(event, state){
if (state == "Started"){
var screenTop = jQuery(document).scrollTop();
var screenHeight = jQuery(window).height();
jQuery('#spinner-overlay').css('top', screenTop);
jQuery('#spinner-overlay').css('height', screenHeight);
jQuery('#spinner-overlay').toggle('show');
}
else if (state == "Finished"){
jQuery('#spinner-overlay').toggle('hide');
}
});
})
结束更新:为完整起见,左下方的原始答案
本着目前“别的东西”的精神,以下是破解当前 JS 并添加一些 CSS 和 DOM 元素以提供微调器的说明:
1)破解主要(xepOnline.jpPlugin.js):
我像这样更改了 Format 函数(在第 735 行或附近)
Format: function(ElementID, options) {
var screenTop = jQuery(document).scrollTop();
var screenHeight = jQuery(window).height();
jQuery('#spinner-overlay').css('top', screenTop);
jQuery('#spinner-overlay').css('height', screenHeight);
jQuery('#spinner-overlay').toggle('show');
var items;
if(jQuery.isArray(ElementID)) {
items = ElementID;
} else {
items = [ ElementID ];
}
return xepOnline.Formatter.__format(items, options);
},
此处唯一的更改是获取几个 var 来放置微调器覆盖层并适当地设置微调器 div。然后将其切换为“打开”,因为此功能将启动整个格式化过程。
然后我更改了 __postBackSuccess 和 __postBackFailure 函数以隐藏微调器(在第 787 和 872 行或附近),因为这些函数将结束整个过程。我在这些函数中添加了以下内容作为第一行:
jQuery('#spinner-overlay').toggle('hide');
然后我将 POST submitall 更改为涵盖“下载”方法。上面会在“newwin”和“embed”但不是下载之后关闭微调器。
在表格发布后的第 698 行或附近,添加:
jQuery('#spinner-overlay').toggle('hide');
2)CSS
我为我的页面添加了以下 CSS:
#spinner-overlay {
background-color: #aaa;
opacity: 0.4;
position: absolute;
left: 0px;
top: 0px;
z-index: 100;
height: 100%;
width: 100%;
overflow: hidden;
background-image: url('/Resources/Images/ajaxSpinner.gif');
background-position: center;
background-repeat: no-repeat;
}
注意:您将指向您自己的自定义微调器作为背景图像,我的是那个“gif”。
3) 页面变化
我在这样的后面添加了一个 <div> :
<div id="spinner-overlay" style="display:none;"></div>
那么会发生什么……当格式化开始时,它会获取当前页面的布局并扩展微调器 div 以覆盖该区域,显示微调器本身覆盖在屏幕上,并带有一些不透明度。当格式完成或中止时,它会隐藏该微调器 div(或者对于下载,它会在数据发布到服务器以进行格式化时隐藏微调器)。
对我来说很好看。