正在加载资讯内容...
资讯加载失败或不存在
返回列表[\s\S]*?(?=
tags if (result && !/<(p|div|h[1-6]|ul|ol|blockquote|table|pre)[\s>]/i.test(result)) { var segments = result.split(/\n\s*\n|\n/).filter(function(s) { return s.trim().length > 0; }); if (segments.length > 1) { result = segments.map(function(s) { return '
' + s.trim() + '
'; }).join(''); } else { result = '' + result + '
'; } } // Remove empty paragraphs result = result.replace(/]*>\s*<\/p>/gi, ''); // Ensure Chinese paragraph formatting: add text-indent to
tags without inline style var tmpDiv = document.createElement('div'); tmpDiv.innerHTML = result; var pTags = tmpDiv.querySelectorAll('p'); for (var pi = 0; pi < pTags.length; pi++) { var p = pTags[pi]; var txt = p.textContent.trim(); // Skip if contains only images or is very short if (txt.length < 2) continue; // Add Chinese paragraph indent if not already styled if (!p.getAttribute('style') || !p.getAttribute('style').includes('text-indent')) { p.style.textIndent = '2em'; p.style.lineHeight = '2'; p.style.marginBottom = '0.8em'; } } // Fix lazy-loaded images: move data-src to src var allImgs = tmpDiv.querySelectorAll('img'); for (var fi = 0; fi < allImgs.length; fi++) { var imgEl = allImgs[fi]; var imgSrc = imgEl.getAttribute('src') || ''; var imgDataSrc = imgEl.getAttribute('data-src') || imgEl.getAttribute('data-original') || imgEl.getAttribute('data-lazy-src') || ''; var isPh = imgSrc.indexOf('data:image') === 0 || imgSrc === '' || imgSrc.indexOf('placeholder') >= 0 || imgSrc.indexOf('spacer') >= 0 || imgSrc.indexOf('blank.gif') >= 0; if (isPh && imgDataSrc) { imgEl.setAttribute('src', imgDataSrc); } else if (!imgSrc && imgDataSrc) { imgEl.setAttribute('src', imgDataSrc); } // Remove base64 placeholder images that have no real src var finalSrc = imgEl.getAttribute('src') || ''; if (finalSrc.indexOf('data:image') === 0) { imgEl.parentNode.removeChild(imgEl); } } // Ensure images are responsive var imgs = tmpDiv.querySelectorAll('img'); for (var ii = 0; ii < imgs.length; ii++) { imgs[ii].style.maxWidth = '100%'; imgs[ii].style.height = 'auto'; imgs[ii].style.display = 'block'; imgs[ii].style.margin = '1em auto'; imgs[ii].style.borderRadius = '4px'; } result = tmpDiv.innerHTML; return result; } async function loadNewsDetail() { const urlParams = new URLSearchParams(window.location.search); const newsId = urlParams.get('id') || ''; if (!newsId) { document.getElementById('news-loading').classList.add('hidden'); document.getElementById('news-error').classList.remove('hidden'); return; } try { const res = await fetch('/api/industry-news/detail/' + newsId); const json = await res.json(); if (json.code !== 200 || !json.data) { document.getElementById('news-loading').classList.add('hidden'); document.getElementById('news-error').classList.remove('hidden'); return; } const news = json.data; // Set page title only - meta info displayed in page header, not repeated in body document.title = (news.title || '行业资讯') + ' - 信托物业教培平台'; // Content: use HTML content if available, with cleanup and paragraph formatting if (news.content && news.content.length > 0) { var cleanedContent = cleanArticleContent(news.content); document.getElementById('news-body').innerHTML = cleanedContent; } else { document.getElementById('news-body').innerHTML = '
暂无详细内容,点击查看原文
'; } // Update breadcrumb const bcSpan = document.querySelector('.container .text-gray-600.truncate'); if (bcSpan && news.title) { bcSpan.textContent = news.title; } // Show content document.getElementById('news-loading').classList.add('hidden'); document.getElementById('news-dynamic-content').classList.remove('hidden'); } catch (e) { console.error('Load news detail failed:', e); document.getElementById('news-loading').classList.add('hidden'); document.getElementById('news-error').classList.remove('hidden'); } } // ========= 相关资讯推荐动态加载 ========= async function loadRelatedNews() { const container = document.getElementById('related-news-list'); if (!container) return; const urlParams = new URLSearchParams(window.location.search); const currentId = urlParams.get('id') || ''; try { const res = await fetch('/api/industry-news/list?page=1&pageSize=6'); const json = await res.json(); if (json.code !== 200 || !json.data || !json.data.list) { container.innerHTML = '' + date + '
' + '