@@ -302,10 +302,10 @@ export class Translator {
302302 #${ APP_CONSTS . boxID } , .${ APP_CONSTS . boxID } _warpper,
303303 #${ APP_CONSTS . popupID } , .${ APP_CONSTS . popupID } _warpper` ;
304304
305- static BUILTIN_IGNORE_SELECTOR = `address, area, audio, br, canvas,
306- data, datalist, embed, head, iframe, input, noscript, map,
307- object, option, param, picture, progress,
308- select, script, style, svg, track, textarea, template,
305+ static BUILTIN_IGNORE_SELECTOR = `address, area, audio, br, canvas,
306+ data, datalist, embed, head, iframe, input, noscript, map,
307+ object, option, param, picture, progress,
308+ select, script, style, svg, track, textarea, template,
309309 video, wbr, .notranslate, [contenteditable='true'], [translate='no']` ;
310310
311311 #setting; // 设置选项
@@ -1686,6 +1686,7 @@ export class Translator {
16861686 toLang,
16871687 // skipLangs = [],
16881688 highlightWords,
1689+ transOrder = "original-first" ,
16891690 } = this . #rule;
16901691 const {
16911692 newlineLength,
@@ -1718,8 +1719,19 @@ export class Translator {
17181719 }
17191720 inner . appendChild ( createLoadingSVG ( ) ) ;
17201721 wrapper . appendChild ( inner ) ;
1722+
1723+ // 在原文和译文之间添加分隔换行
1724+ const separatorBr = document . createElement ( "br" ) ;
1725+ separatorBr . hidden = hideOrigin ;
1726+ wrapper . appendChild ( separatorBr ) ;
1727+
17211728 this . #withViewportAnchor( ( ) => {
1722- nodes [ nodes . length - 1 ] . after ( wrapper ) ;
1729+ // 根据 transOrder 选项决定译文显示位置
1730+ if ( transOrder === "translation-first" ) {
1731+ nodes [ 0 ] . before ( wrapper ) ; // 译文在上
1732+ } else {
1733+ nodes [ nodes . length - 1 ] . after ( wrapper ) ; // 原文在上(默认)
1734+ }
17231735 } ) ;
17241736
17251737 const currentRunId = this . #runId;
0 commit comments