fix: 修复右对齐短文本显示不完整及多项功能改进
右对齐文本显示修复(如"巫鸿"只显示"鸿"的问题): - RDEPUBChapterTailNormalizer: 短尾页合并时检查 avoidPageBreakInside 语义, 避免将带有此标记的短文本(如 right-info 署名)错误合并回上一页 - RDEPUBTextContentView: 续段归一化时跳过右对齐/居中对齐的段落, 防止错误修改 firstLineHeadIndent 导致首字不可见 - RDEPUBCSSCompatibilityLayer: 为含 text-align:right/center 的 CSS 块 自动注入 text-indent:0 !important,确保右对齐/居中文本无首行缩进 - RDEPUBTextRendererSupport: 排版属性归一化时将右对齐/居中段落的 firstLineHeadIndent 重置为 0 图片查看器及脚注点击功能: - 新增 RDEPUBImageViewController 和 RDEPUBImageViewerCoordinator, 支持从 WebView 和 TextPage 两种模式查看图片 - epub-bridge.js: 检测图片和脚注图片的点击事件,脚注图片显示弹窗 - RDEPUBJavaScriptBridge: 新增 imageDidTap/footnoteDidTap 桥接消息 - RDEPUBWebView: 新增图片和脚注点击的 delegate 方法 - RDEPUBAttachmentNormalizer: 改进脚注检测,优先使用 alt 文本判断 - RDEPUBPaginationModels: 新增 .footnote 附件类型 - RDEPUBPageLayoutSnapshot: 运行时动态解析附件类型,脚注优先级高于图片 位置解析改进: - RDEPUBReaderController+LocationResolution: 利用 rangeInfo 提升页码定位精度 其他: - RDEPUBTextBookCache: schema 版本升级至 13 - RDEPUBReaderTheme: 主题更新 - Pod 项目文件更新 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -386,6 +386,43 @@
|
||||
}, 120);
|
||||
}
|
||||
function handleDocumentClick(event) {
|
||||
// Check for image tap. Footnote images always show the note popup; regular
|
||||
// images inside links are left to the link handler below.
|
||||
var img = event.target;
|
||||
while (img && img.tagName !== 'IMG') {
|
||||
img = img.parentElement;
|
||||
}
|
||||
if (img && img.tagName === 'IMG') {
|
||||
var src = img.getAttribute('src');
|
||||
var classes = (img.getAttribute('class') || '').toLowerCase();
|
||||
var alt = (img.getAttribute('alt') || '').trim();
|
||||
var isFootnote = classes.indexOf('qqreader-footnote') >= 0 || alt.length > 0;
|
||||
if (isFootnote) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
var footnoteRect = img.getBoundingClientRect();
|
||||
window.webkit.messageHandlers.{{FOOTNOTE_DID_TAP_MESSAGE}}.postMessage({
|
||||
alt: alt,
|
||||
rect: { x: footnoteRect.x, y: footnoteRect.y, width: footnoteRect.width, height: footnoteRect.height }
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// If a regular image is inside a link, let the link handler deal with it.
|
||||
var linkParent = img.closest ? img.closest('a[href]') : null;
|
||||
if (!linkParent) {
|
||||
if (src) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
var rect = img.getBoundingClientRect();
|
||||
window.webkit.messageHandlers.{{IMAGE_DID_TAP_MESSAGE}}.postMessage({
|
||||
src: src,
|
||||
rect: { x: rect.x, y: rect.y, width: rect.width, height: rect.height }
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
var anchor = event.target.closest ? event.target.closest('a[href]') : null;
|
||||
if (!anchor) { return; }
|
||||
var href = anchor.getAttribute('href');
|
||||
|
||||
Reference in New Issue
Block a user