1. 概述
1.1 問題描述
在開發大屏報表的時候,有時會讓多張大屏輪播,在特定的情況下能停止輪播。如下圖所示,兩張報表輪播,當鼠标移入報表時,停止輪播。
1.2 解決思路
可以通過 JavaScript 延時函數使頁面在規定時間後執行跳轉到另一不同頁面來實現輪播,JS事件中加上鼠标移入移出停止輪播的語句。
2. 示例
2.1 準備模板
1)新建一個決策報表:01-JS 實現暫停和繼續輪播 frm 報表 2.frm,保存到%FR_HOME%\webapps\webroot\WEB-INF\reportlets\表單JS實例路徑下。
2)新建數據集 ds1,SQL語句爲:SELECT * FROM 銷量
3)在 body 中拖入兩個報表塊,如下圖所示設置報表樣式。
2.2 添加事件
選中 report0 控件,添加初始化後事件,如下圖所示:
事件内容爲固定事件内跳轉 01-JS實現暫停和繼續輪播frm報表2.frm 報表,到當把鼠标移到 report0 标題報表塊時,停止輪播,鼠标移開後,又繼續輪播。
JavaScript 代碼如下:
function time() {
timer = setTimeout(function() {
window.location.href = encodeURI(encodeURI("${contextPath}/decision/view/form?viewlet=doc/JS/表單JS實例/01-JS實現暫停和繼續輪播frm報表2.frm")); //要輪播的報表url
}, 2000); //輪播間隔
}
time();
setTimeout(function() {
//這裏的控件名要全用大寫
$("[widgetname=REPORT0]").mouseover(function() {
clearTimeout(timer);
})
$("[widgetname=REPORT0]").mouseleave(function() {
time();
})
})
2.3 輪播模板
在 %FR_HOME%\webapps\webroot\WEB-INF\reportlets\表單JS實例 路徑下再新建一個決策報表:01-JS實現暫停和繼續輪播frm報表2.frm
同樣的方法設計報表樣式,添加事件跳轉到 01-JS實現暫停和繼續輪播frm報表1.frm" ,JS代碼基本不變,只需要将事件中 的URL 需要改爲如下代碼即可。
"${contextPath}/decision/view/form?viewlet=表單JS實例/01-JS實現暫停和繼續輪播frm報表1.frm"
2.4 效果預覽
保存模板,點擊「PC端預覽」,PC 端效果如下圖所示:
注:不支持移動端。
3. 模板下載
已完成的模板,可參見:
%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\表單JS實例\01-JS實現暫停和繼續輪播frm報表1.frm
%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\表單JS實例\01-JS實現暫停和繼續輪播frm報表2.frm
點擊下載模板: