assets/js/headerimage.js

71 lines
2.4 KiB
JavaScript

var defaultHeaderImage = (function () {
let box = document.getElementById('BoxTop');
for (let i = 0; i < box.getElementsByTagName('div').length; i++)
if ((' '+box.getElementsByTagName('div')[i].className+' ').indexOf('bgImage') >= 0) {
let spl = box.getElementsByTagName('div')[i].style.backgroundImage.split('"');
if (spl.length == 3)
return absolutePath(spl[1], self.location.href);
break;
}
return '';
})();
var currentHeaderImage = defaultHeaderImage;
function loadHeader (src, vPos='center', loadWithoutEffect=false) {
if (src == currentHeaderImage) return;
currentHeaderImage = src;
if (vPos == '')
vPos = 'center';
var img = new Image();
img.onload = function () {
var op = 0;
var oldEl = null;
var newEl = document.createElement('div');
var box = document.getElementById('BoxTop');
newEl.className = 'bgImage';
if (vPos)
newEl.style.backgroundPosition = 'center '+vPos;
newEl.style.backgroundImage = "url('"+img.src+"')";
for (let i = box.getElementsByTagName('div').length-1; i >= 0; i--)
if ((' '+box.getElementsByTagName('div')[i].className+' ').indexOf('bgImage') >= 0) {
oldEl = box.getElementsByTagName('div')[i];
break;
}
if (oldEl) {
newEl.style.opacity = 0;
box.insertBefore(newEl, oldEl.nextSibling);
if (loadWithoutEffect) {
newEl.style.opacity = 1;
box.removeChild(oldEl);
return;
}
} else {
box.insertBefore(newEl, box.firstChild);
return;
}
var tmr = window.setInterval(function () {
op += 0.01;
if (op >= 1) {
newEl.style.opacity = 1;
box.removeChild(oldEl);
img = null;
window.clearInterval(tmr);
} else
newEl.style.opacity = op;
}, 10);
};
img.src = src;
}
function searchHeaderImage (site, loadWithoutEffect) {
try {
let meta = site.document.getElementsByTagName('head')[0].getElementsByTagName('meta');
for (let i = 0; i < meta.length; i++)
if (meta[i].getAttribute('property') == 'og:image') {
let newPath = absolutePath(meta[i].getAttribute('content'), site.location.href);
if (currentHeaderImage != newPath)
loadHeader(newPath, meta[i].getAttribute('position'), loadWithoutEffect);
return;
}
} catch (e) { }
loadHeader(defaultHeaderImage, loadWithoutEffect);
}