Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d874fe4274 |
@@ -60,16 +60,45 @@ Contao 5 – Frontend Module Template
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type="module">
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/meilisearch@0.39.0/dist/bundles/meilisearch.umd.min.js"></script>
|
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
(function () {
|
||||||
|
const CDN_URLS = [
|
||||||
|
'https://cdn.jsdelivr.net/npm/meilisearch@0.39.0/dist/bundles/meilisearch.umd.min.js',
|
||||||
|
'https://unpkg.com/meilisearch@0.39.0/dist/bundles/meilisearch.umd.min.js'
|
||||||
|
];
|
||||||
|
|
||||||
if (typeof MeiliSearch === 'undefined') {
|
function loadClient(urls, onDone) {
|
||||||
console.error('[Meilisearch] Browser client konnte nicht geladen werden');
|
if (typeof MeiliSearch !== 'undefined') {
|
||||||
return;
|
onDone(true, null);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!urls.length) {
|
||||||
|
onDone(false, 'Alle CDN-Quellen fehlgeschlagen (mögliche CSP-Blockierung von script-src).');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const url = urls.shift();
|
||||||
|
const script = document.createElement('script');
|
||||||
|
script.src = url;
|
||||||
|
script.async = true;
|
||||||
|
script.crossOrigin = 'anonymous';
|
||||||
|
|
||||||
|
script.onload = () => {
|
||||||
|
if (typeof MeiliSearch !== 'undefined') {
|
||||||
|
onDone(true, null);
|
||||||
|
} else {
|
||||||
|
loadClient(urls, onDone);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
script.onerror = () => loadClient(urls, onDone);
|
||||||
|
|
||||||
|
document.head.appendChild(script);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function initSearch() {
|
||||||
|
|
||||||
const wrapper = document.querySelector('.meilisearch-search');
|
const wrapper = document.querySelector('.meilisearch-search');
|
||||||
if (!wrapper) return;
|
if (!wrapper) return;
|
||||||
|
|
||||||
@@ -226,7 +255,19 @@ Contao 5 – Frontend Module Template
|
|||||||
results.appendChild(node);
|
results.appendChild(node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
loadClient([...CDN_URLS], (ok, reason) => {
|
||||||
|
if (!ok) {
|
||||||
|
console.error('[Meilisearch] Browser client konnte nicht geladen werden. ' + reason);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
initSearch();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})();
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
<!-- indexer::continue -->
|
<!-- indexer::continue -->
|
||||||
Reference in New Issue
Block a user