ocument} document * @returns {string|null} */ function getJSONLDUrl(document) { const firstMatch = Array.from( document.querySelectorAll('script[type="application/ld+json"]') ) .map(script => { try { return JSON.parse(script.textContent); } catch { return null; } }) .find(obj => obj && obj.url && typeof obj.url === "string"); return firstMatch?.url; } /** * @param {Document} document * @returns {string|null} */ function getFallbackCanonicalUrl(document) { const fallbackUrl = URL.parse(document.documentURI); if (fallbackUrl) { fallbackUrl.hash = ""; return fallbackUrl.toString(); } return null; } PK