将服务 Xportability/css-to-pdf 链接到 JavaScript 微调器
Linking service Xportability/css-to-pdf to a JavaScript spinner
我注意到当我点击 PDF 按钮时,下载 PDF 需要一些时间。有什么我可以为其创建 eventListener 的吗?所以我可以开始和结束微调器。这确实是 iPad 上的一个问题,它需要更长的时间...但至少有 30-50 秒直到 waiting for xep.cloudformatter...
出现。
或者还有什么我可以做的。
更新:我在核心代码中添加了一个事件"xepOnlineStatus"。它将参数设置为状态并在格式化开始和结束时触发。这些状态是 "Started" 和 "Finished"。您现在可以像下面这样实现一个简单的 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');
}
});
})
更新结束:为了完整起见,左下方的原始答案
暂时本着 "something else" 的精神,这里是破解当前 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 以涵盖 "download" 方法。以上将在 "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 id="spinner-overlay" style="display:none;"></div>
那么会发生什么......当格式化开始时,它会获取当前页面的布局并扩展微调器 div 以覆盖该区域,显示微调器本身以某种不透明度覆盖在屏幕上。当格式化完成或中止时,它会隐藏该微调器 div(或者对于下载,它将在数据发布到服务器进行格式化时隐藏微调器)。
我觉得不错。
我注意到当我点击 PDF 按钮时,下载 PDF 需要一些时间。有什么我可以为其创建 eventListener 的吗?所以我可以开始和结束微调器。这确实是 iPad 上的一个问题,它需要更长的时间...但至少有 30-50 秒直到 waiting for xep.cloudformatter...
出现。
或者还有什么我可以做的。
更新:我在核心代码中添加了一个事件"xepOnlineStatus"。它将参数设置为状态并在格式化开始和结束时触发。这些状态是 "Started" 和 "Finished"。您现在可以像下面这样实现一个简单的 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');
}
});
})
更新结束:为了完整起见,左下方的原始答案
暂时本着 "something else" 的精神,这里是破解当前 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 以涵盖 "download" 方法。以上将在 "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 id="spinner-overlay" style="display:none;"></div>
那么会发生什么......当格式化开始时,它会获取当前页面的布局并扩展微调器 div 以覆盖该区域,显示微调器本身以某种不透明度覆盖在屏幕上。当格式化完成或中止时,它会隐藏该微调器 div(或者对于下载,它将在数据发布到服务器进行格式化时隐藏微调器)。
我觉得不错。