You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
2.1 KiB

2 years ago
layui.define(['jquery', 'element'], function(exports) {
2 years ago
"use strict";
var $ = layui.jquery;
2 years ago
var frame = function(opt) {
2 years ago
this.option = opt;
};
2 years ago
frame.prototype.render = function(opt) {
2 years ago
var option = {
elem: opt.elem,
url: opt.url,
title: opt.title,
width: opt.width,
height: opt.height,
2 years ago
done: opt.done ? opt.done : function() {
console.log("菜单渲染成功");
}
2 years ago
}
2 years ago
renderContent(option);
2 years ago
$("#" + option.elem).width(option.width);
$("#" + option.elem).height(option.height);
2 years ago
return new frame(option);
2 years ago
}
2 years ago
frame.prototype.changePage = function(url, loading) {
2 years ago
var $frameLoad = $("#" + this.option.elem).find(".pear-frame-loading");
var $frame = $("#" + this.option.elem + " iframe");
$frame.attr("src", url);
2 years ago
renderContentLoading($frame, $frameLoad, loading);
2 years ago
}
2 years ago
frame.prototype.changePageByElement = function(elem, url, title, loading) {
2 years ago
var $frameLoad = $("#" + elem).find(".pear-frame-loading");
var $frame = $("#" + elem + " iframe");
$frame.attr("src", url);
$("#" + elem + " .title").html(title);
2 years ago
renderContentLoading($frame, $frameLoad, loading);
2 years ago
}
2 years ago
frame.prototype.refresh = function(loading) {
2 years ago
var $frameLoad = $("#" + this.option.elem).find(".pear-frame-loading");
var $frame = $("#" + this.option.elem).find("iframe");
$frame.attr("src", $frame.attr("src"));
2 years ago
renderContentLoading($frame, $frameLoad, loading);
2 years ago
}
2 years ago
function renderContent(option) {
var iframe = `<iframe class='pear-frame-content' style='width:100%;height:100%;' scrolling='auto' frameborder='0' src='${option.url}' allowfullscreen='true' ></iframe>`;
var loading = `<div class="pear-frame-loading">
<div class="ball-loader">
<span></span><span></span><span></span><span></span>
</div>
</div></div>`;
2 years ago
$("#" + option.elem).html("<div class='pear-frame'>" + iframe + loading + "</div>");
}
2 years ago
function renderContentLoading (iframeEl, loadingEl, isLoading) {
2 years ago
if (isLoading) {
2 years ago
loadingEl.css({
display: 'block'
});
$(iframeEl).on('load', function() {
2 years ago
loadingEl.fadeOut(1000);
})
}
}
2 years ago
exports('frame', new frame());
2 years ago
});