第七十章恐龙出笼 - 漫威世界里的赛亚人 - 逍遥龙剑魂 - 科幻灵异小说 - 30读书

第七十章恐龙出笼

thepagetemporarilyunavaier"valign="&porarilyunavailable.</p><p> pleasetryagainlater.</p><p> <body></p><p> <html></p> </div> <!-- 底部功能区 --> <div class="chapter-reader-nav"> <div class="chapter-nav-links"> <a href="/book/157912/206447156.html" class="chapter-nav-btn nav-prev"> <svg viewBox="0 0 24 24" width="16" height="16"> <path fill="currentColor" d="M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z"/> </svg> 上一章 </a> <a href="/index/157912/" class="chapter-nav-btn nav-index"> <svg viewBox="0 0 24 24" width="16" height="16"> <path fill="currentColor" d="M7,5H21V7H7V5M7,13V11H21V13H7M4,4.5A1.5,1.5 0 0,1 5.5,6A1.5,1.5 0 0,1 4,7.5A1.5,1.5 0 0,1 2.5,6A1.5,1.5 0 0,1 4,4.5M4,10.5A1.5,1.5 0 0,1 5.5,12A1.5,1.5 0 0,1 4,13.5A1.5,1.5 0 0,1 2.5,12A1.5,1.5 0 0,1 4,10.5M7,19V17H21V19H7M4,16.5A1.5,1.5 0 0,1 5.5,18A1.5,1.5 0 0,1 4,19.5A1.5,1.5 0 0,1 2.5,18A1.5,1.5 0 0,1 4,16.5Z"/> </svg> 目录 </a> <button class="chapter-nav-btn nav-bookmark" onclick="window.addBookcase && window.addBookcase('157912', 0, event)"> <svg viewBox="0 0 24 24" width="16" height="16"> <path fill="currentColor" d="M17,3H7A2,2 0 0,0 5,5V21L12,18L19,21V5C19,3.89 18.1,3 17,3Z"/> </svg> +书签 </button> <button class="chapter-nav-btn nav-report" onclick="showReportDialog()"> <svg viewBox="0 0 24 24" width="16" height="16"> <path fill="currentColor" d="M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z"/> </svg> 报错 </button> <a href="/book/157912/206447308.html" class="chapter-nav-btn nav-next"> 下一章 <svg viewBox="0 0 24 24" width="16" height="16"> <path fill="currentColor" d="M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"/> </svg> </a> </div> </div> </div> <!-- 移动端工具栏遮罩层 --> <div class="chapter-toolbar-overlay" id="toolbarOverlay" onclick="window.toggleToolbar && window.toggleToolbar()"></div> <!-- 悬浮工具栏 --> <div class="chapter-float-toolbar" id="floatToolbar"> <div class="toolbar-toggle" onclick="window.toggleToolbar && window.toggleToolbar()"> <svg viewBox="0 0 24 24" width="24" height="24"> <path fill="currentColor" d="M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.98C19.47,12.66 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11.02L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.65 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11.02C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.68 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.98Z"/> </svg> </div> <div class="toolbar-menu" id="toolbarMenu"> <div class="toolbar-item"> <span class="toolbar-label">字体大小</span> <div class="toolbar-controls"> <button class="toolbar-btn" onclick="window.decreaseFontSize && window.decreaseFontSize()">A-</button> <button class="toolbar-btn" onclick="window.increaseFontSize && window.increaseFontSize()">A+</button> </div> </div> <div class="toolbar-item"> <span class="toolbar-label">主题切换</span> <div class="toolbar-controls"> <button class="toolbar-btn" onclick="window.toggleDarkMode && window.toggleDarkMode(event)"> <svg viewBox="0 0 24 24" width="16" height="16"> <path fill="currentColor" d="M17.75,4.09L15.22,6.03L16.13,9.09L13.5,7.28L10.87,9.09L11.78,6.03L9.25,4.09L12.44,4L13.5,1L14.56,4L17.75,4.09M21.25,11L19.61,12.25L20.2,14.23L18.5,13.06L16.8,14.23L17.39,12.25L15.75,11L17.81,10.95L18.5,9L19.19,10.95L21.25,11M18.97,15.95C19.8,15.87 20.69,17.05 20.16,17.8C19.84,18.25 19.5,18.67 19.08,19.07C15.17,23 8.84,23 4.94,19.07C1.03,15.17 1.03,8.83 4.94,4.93C5.34,4.53 5.76,4.17 6.21,3.85C6.96,3.32 8.14,4.21 8.06,5.04C7.79,7.9 8.75,10.87 10.95,13.06C13.14,15.26 16.1,16.22 18.97,15.95M17.33,17.97C14.5,17.81 11.7,16.64 9.53,14.5C7.36,12.31 6.2,9.5 6.04,6.68C3.23,9.82 3.34,14.4 6.35,17.41C9.37,20.43 14,20.54 17.33,17.97Z"/> </svg> 夜间 </button> </div> </div> </div> </div> </div> <script> // 简化的章节页面初始化,确保与main.js兼容 (function() { // 等待DOM和main.js都加载完成 function initChapterPage() { console.log('初始化章节页面...'); // 检查工具栏函数是否可用 if (typeof window.toggleToolbar !== 'function') { console.error('toggleToolbar函数未定义,请检查main.js加载'); return; } // 自动记录阅读历史 if (window.sethistory && window.bookinfo) { const bookinfo = window.bookinfo; if (bookinfo.articleid && bookinfo.chapterid) { window.sethistory(bookinfo.articleid, bookinfo.chapterid, bookinfo.articlename, bookinfo.chaptername); } } // 恢复用户设置 const savedFontSize = localStorage.getItem('chapterFontSize'); if (savedFontSize) { const content = document.getElementById('chapterContent'); if (content) content.style.fontSize = savedFontSize + 'px'; } const isDarkMode = localStorage.getItem('chapterDarkMode') === 'true'; if (isDarkMode) { document.body.classList.add('chapter-dark-mode'); } // 移动端工具栏优化 const toolbarMenu = document.getElementById('toolbarMenu'); if (toolbarMenu) { toolbarMenu.addEventListener('click', function(e) { e.stopPropagation(); }); } // 键盘快捷键 document.addEventListener('keydown', function(e) { switch(e.key) { case 'ArrowLeft': case 'a': case 'A': const prevBtn = document.querySelector('a[href*="/book/157912/206447156.html"]'); if (prevBtn) prevBtn.click(); break; case 'ArrowRight': case 'd': case 'D': const nextBtn = document.querySelector('a[href*="/book/157912/206447308.html"]'); if (nextBtn) nextBtn.click(); break; case 'Escape': const infoBtn = document.querySelector('a[href*="/book/157912/"]'); if (infoBtn) infoBtn.click(); break; case 's': case 'S': if (window.toggleToolbar) window.toggleToolbar(); break; } }); console.log('章节页面初始化完成'); } // 确保在DOM和main.js都准备好后初始化 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { setTimeout(initChapterPage, 100); // 给main.js一点时间初始化 }); } else { setTimeout(initChapterPage, 100); } })(); // 报错功能 function showReportDialog() { // 检查报错间隔 const lastReportTime = localStorage.getItem('lastReportTime'); const now = Date.now(); const delay = 30000; if (lastReportTime && (now - parseInt(lastReportTime)) < delay) { const remaining = Math.ceil((delay - (now - parseInt(lastReportTime))) / 1000); alert(`请不要过于频繁,还需等待 ${remaining} 秒`); return; } // 创建报错对话框 const dialog = document.createElement('div'); dialog.className = 'report-dialog-overlay'; dialog.innerHTML = ` <div class="report-dialog"> <div class="report-dialog-header"> <h3>章节报错</h3> <button class="report-dialog-close" onclick="closeReportDialog()">×</button> </div> <div class="report-dialog-body"> <div class="report-book-info"> <p><strong>小说:</strong>漫威世界里的赛亚人</p> <p><strong>章节:</strong>第七十章恐龙出笼</p> </div> <div class="report-form"> <label>错误类型:</label> <div class="report-radio-group"> <label><input type="radio" name="errtype" value="1" checked> 未更新</label> <label><input type="radio" name="errtype" value="2"> 内容错误</label> <label><input type="radio" name="errtype" value="3"> 其他错误</label> </div> <label>错误描述:</label> <textarea id="reportContent" placeholder="请描述具体错误(选择其他错误时必填)" maxlength="200"></textarea> <div class="report-char-count"> <span id="charCount">0</span>/200 </div> </div> </div> <div class="report-dialog-footer"> <button class="report-btn-cancel" onclick="closeReportDialog()">取消</button> <button class="report-btn-submit" onclick="submitReport()">提交</button> </div> </div> `; document.body.appendChild(dialog); // 绑定字符计数 const textarea = document.getElementById('reportContent'); const charCount = document.getElementById('charCount'); textarea.addEventListener('input', function() { charCount.textContent = this.value.length; }); // 阻止背景滚动 document.body.style.overflow = 'hidden'; } function closeReportDialog() { const dialog = document.querySelector('.report-dialog-overlay'); if (dialog) { dialog.remove(); document.body.style.overflow = ''; } } function submitReport() { const errtype = document.querySelector('input[name="errtype"]:checked').value; const content = document.getElementById('reportContent').value.trim(); // 验证输入 if (errtype === '3' && !content) { alert('选择"其他错误"时,错误描述不能为空'); return; } if (content.length > 200) { alert('错误描述不能超过200个字符'); return; } // 提交报错 const formData = new FormData(); formData.append('do', 'report'); formData.append('articleid', '157912'); formData.append('chapterid', '206447304'); formData.append('articlename', '漫威世界里的赛亚人'); formData.append('chaptername', '第七十章恐龙出笼'); formData.append('errtype', errtype); formData.append('content', content); fetch('/api/report', { method: 'POST', body: formData }) .then(response => response.text()) .then(result => { if (result === '200') { alert('提交成功!感谢您的反馈,我们会尽快处理'); localStorage.setItem('lastReportTime', Date.now().toString()); closeReportDialog(); } else { alert('提交失败,请稍后重试'); } }) .catch(error => { console.error('报错提交失败:', error); alert('提交失败,请稍后重试'); }); } </script> <!-- 报错对话框样式 --> <style> .report-dialog-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: flex; align-items: center; justify-content: center; z-index: 9999; } .report-dialog { background: white; border-radius: 8px; width: 90%; max-width: 500px; max-height: 80vh; overflow: hidden; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); } .report-dialog-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; border-bottom: 1px solid #eee; background: #f8f9fa; } .report-dialog-header h3 { margin: 0; color: #333; } .report-dialog-close { background: none; border: none; font-size: 1.5rem; cursor: pointer; color: #666; padding: 0; width: 30px; height: 30px; display: flex; align-items: center; justify-content: center; } .report-dialog-close:hover { color: #333; } .report-dialog-body { padding: 1.5rem; max-height: 50vh; overflow-y: auto; } .report-book-info { background: #f8f9fa; padding: 1rem; border-radius: 4px; margin-bottom: 1rem; } .report-book-info p { margin: 0.5rem 0; font-size: 0.9rem; } .report-form label { display: block; margin: 1rem 0 0.5rem 0; font-weight: bold; color: #333; } .report-radio-group { display: flex; gap: 1rem; margin-bottom: 1rem; } .report-radio-group label { display: flex; align-items: center; margin: 0; font-weight: normal; cursor: pointer; } .report-radio-group input[type="radio"] { margin-right: 0.5rem; } .report-form textarea { width: 100%; min-height: 80px; padding: 0.75rem; border: 1px solid #ddd; border-radius: 4px; resize: vertical; font-family: inherit; box-sizing: border-box; } .report-char-count { text-align: right; font-size: 0.8rem; color: #666; margin-top: 0.25rem; } .report-dialog-footer { display: flex; gap: 1rem; padding: 1rem 1.5rem; border-top: 1px solid #eee; background: #f8f9fa; } .report-btn-cancel, .report-btn-submit { flex: 1; padding: 0.75rem; border: none; border-radius: 4px; cursor: pointer; font-size: 0.9rem; transition: background-color 0.2s; } .report-btn-cancel { background: #6c757d; color: white; } .report-btn-cancel:hover { background: #5a6268; } .report-btn-submit { background: #007bff; color: white; } .report-btn-submit:hover { background: #0056b3; } /* 移动端适配 */ @media (max-width: 768px) { .report-dialog { width: 95%; margin: 1rem; } .report-radio-group { flex-direction: column; gap: 0.5rem; } } </style> </main> <!-- 主要内容结束 --> <!-- 网站底部 --> <footer class="footer"> <div class="container"> <div class="footer-bottom"> <p>© 2025 30读书. 保留所有权利.</p> <p>本站所有小说为转载作品,所有章节均由网友上传。</p> </div> </div> </footer> <!-- JavaScript文件 --> <script src="https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/vanilla-lazyload/17.3.1/lazyload.min.js"></script> <script src="/static/modern/js/main.js?v=2025092614084"></script> <!-- 统计代码 --> </body> </html>