diff options
| author | Alexandre Flament <alex@al-f.net> | 2021-11-30 20:21:03 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-30 20:21:03 +0100 |
| commit | 632ae7d175dc3ad7404e1df943b1dc45881f7c87 (patch) | |
| tree | b7926f91cee25b90369ac9d6410b0f679b13eb3e /searx/static/themes/__common__/js/image_layout.js | |
| parent | 0311eba538df589bc11a4d76d3c94b104c5b764d (diff) | |
| parent | 4798acc6615efada91c8fb29083a521daf5e1e27 (diff) | |
Merge pull request #562 from return42/fix-img-alt
[simple] ImageLayout.watch: `img_load_error.svg` if img load fails
Diffstat (limited to 'searx/static/themes/__common__/js/image_layout.js')
| -rw-r--r-- | searx/static/themes/__common__/js/image_layout.js | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/searx/static/themes/__common__/js/image_layout.js b/searx/static/themes/__common__/js/image_layout.js index 653da95a0..be4fe84e0 100644 --- a/searx/static/themes/__common__/js/image_layout.js +++ b/searx/static/themes/__common__/js/image_layout.js @@ -8,8 +8,19 @@ * * @license Free to use under the MIT License. * +* @example <caption>Example usage of searxng.ImageLayout class.</caption> +* searxng.image_thumbnail_layout = new searxng.ImageLayout( +* '#urls', // container_selector +* '#urls .result-images', // results_selector +* 'img.image_thumbnail', // img_selector +* 14, // verticalMargin +* 6, // horizontalMargin +* 200 // maxHeight +* ); +* searxng.image_thumbnail_layout.watch(); */ + (function (w, d) { function ImageLayout(container_selector, results_selector, img_selector, verticalMargin, horizontalMargin, maxHeight) { this.container_selector = container_selector; @@ -136,6 +147,11 @@ var results_nodes = d.querySelectorAll(this.results_selector); var results_length = results_nodes.length; + function img_load_error(event) { + // console.log("ERROR can't load: " + event.originalTarget.src); + event.originalTarget.src = w.searxng.static_path + w.searxng.theme.img_load_error; + } + function throttleAlign() { if (obj.isAlignDone) { obj.isAlignDone = false; @@ -146,15 +162,22 @@ } } + // https://developer.mozilla.org/en-US/docs/Web/API/Window/pageshow_event w.addEventListener('pageshow', throttleAlign); + // https://developer.mozilla.org/en-US/docs/Web/API/FileReader/load_event w.addEventListener('load', throttleAlign); + // https://developer.mozilla.org/en-US/docs/Web/API/Window/resize_event w.addEventListener('resize', throttleAlign); for (i = 0; i < results_length; i++) { img = results_nodes[i].querySelector(this.img_selector); if (img !== null && img !== undefined) { img.addEventListener('load', throttleAlign); + // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror img.addEventListener('error', throttleAlign); + if (w.searxng.theme.img_load_error) { + img.addEventListener('error', img_load_error, {once: true}); + } } } }; |