function htmlFAQToFAQJson(accordionHtml) {
const accordionItems = accordionHtml.querySelectorAll('.accordion-item');
const faqItems = Array.from(accordionItems).map(item => {
const question = item.querySelector('.accordion-item-title')?.textContent.trim().replace(/\s+/g, ' ') || '';
const contentEl = item.querySelector('.accordion-item-content');
const textParts = [];
if (contentEl) {
contentEl.childNodes.forEach(node => {
if (node.nodeType === Node.ELEMENT_NODE) {
if (node.tagName === 'P' || node.tagName === 'SPAN') {
const text = node.textContent.trim();
if (text) textParts.push(text);
} else if (node.tagName === 'UL' || node.tagName === 'OL') {
const listItems = Array.from(node.querySelectorAll('li')).map(li => `• ${li.textContent.trim()}`);
textParts.push(...listItems);
}
} else if (node.nodeType === Node.TEXT_NODE) {
const text = node.textContent.trim();
if (text) textParts.push(text);
}
});
}
const answer = textParts.join('\n');
return {
"@type": "Question",
"name": question,
"acceptedAnswer": {
"@type": "Answer",
"text": answer
}
};
});
return {
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": faqItems
};
}
function htmlFAQToScriptBalise() {
console.log("test1");
const faq = document.querySelector('div.accordion');
if (faq) {
console.log("test2");
const FAQjson = htmlFAQToFAQJson(faq);
if (FAQjson) {
console.log("test3");
const newScript = document.createElement('script');
newScript.type = 'application/ld+json';
newScript.textContent = JSON.stringify(FAQjson, null, 2);
document.body.insertBefore(newScript, document.body.firstChild);
}
}
}
window.addEventListener("STFAQLoaded", htmlFAQToScriptBalise());
window.addEventListener("STFAQLoaded", console.log("test"));