User:Kxx/fix images.js: Difference between revisions
Appearance
< User:Kxx
Content deleted Content added
No edit summary |
No edit summary |
||
Line 32: | Line 32: | ||
observer.observe(obj[0]); |
observer.observe(obj[0]); |
||
obj.attr('src', src); |
obj.attr('src', src); |
||
if (typeof data |
if (typeof data !== 'string') { |
||
data = new |
data = new XMLSerializer().serializeToString(data); |
||
} |
} |
||
data = new XMLSerializer().serializeToString(data); |
|||
obj.attr('data', `data:image/svg+xml,${encodeURIComponent(data)}`) |
obj.attr('data', `data:image/svg+xml,${encodeURIComponent(data)}`) |
||
img.replaceWith(div); |
img.replaceWith(div); |
Revision as of 07:51, 6 June 2024
(() => {
const srcRegex =
/^((?:https?:)?\/\/upload\.wikimedia\.org\/.*)\/thumb(\/.*\/)(\d{14}%21|)(.*\.[Ss][Vv][Gg])\/\d+px-\4\.png$/;
let observer = new ResizeObserver((entries) => {
$(entries).each((index, entry) => {
let obj = $(entry.target);
let div = obj.parent();
let scaleX = div.width() / obj.width();
let scaleY = div.height() / obj.height();
obj.css({scale: `${scaleX} ${scaleY}`});
})
});
$('img').each((index, elem) => {
let img = $(elem);
let matches = srcRegex.exec(img.attr('src'));
if (matches) {
let src = matches.slice(1, 5).join('');
$.get(src).done((data) => {
let div = $('<div>');
div.attr('class', img.attr('class'));
div.css({
display: 'inline-block',
overflow: 'clip',
verticalAlign: img.css('vertical-align')
});
div.width(img.width()).height(img.height());
let obj = $('<object type="image/svg+xml">').appendTo(div);
obj.css({
display: 'block',
transformOrigin: 'top left'
})
observer.observe(obj[0]);
obj.attr('src', src);
if (typeof data !== 'string') {
data = new XMLSerializer().serializeToString(data);
}
obj.attr('data', `data:image/svg+xml,${encodeURIComponent(data)}`)
img.replaceWith(div);
});
}
});
})();