@@ -94,21 +94,34 @@ class FootnoteDialog {
94
94
document . addEventListener ( 'mousemove' , this . drag . bind ( this ) ) ;
95
95
document . addEventListener ( 'mouseup' , this . stopDragging . bind ( this ) ) ;
96
96
97
- // Add close button handler
97
+ // 添加关闭按钮事件
98
98
this . dialog . querySelector ( '.close-button' ) . addEventListener ( 'click' , ( ) => {
99
99
this . dialog . close ( ) ;
100
100
this . dialog . remove ( ) ;
101
+ document . removeEventListener ( 'dblclick' , this . handleOutsideDoubleClick ) ;
101
102
} ) ;
102
103
104
+ // 添加在弹窗外双击关闭弹窗的事件监听
105
+ document . addEventListener ( 'dblclick' , this . handleOutsideDoubleClick ) ;
106
+
103
107
this . dialog . addEventListener ( 'close' , ( ) => {
104
108
this . dialog . remove ( ) ;
109
+ document . removeEventListener ( 'dblclick' , this . handleOutsideDoubleClick ) ;
105
110
} ) ;
106
111
107
112
this . dialog . show ( ) ;
113
+ }
108
114
109
-
115
+ // 处理在弹窗外双击的事件
116
+ private handleOutsideDoubleClick = ( event : MouseEvent ) => {
117
+ if ( ! this . dialog . contains ( event . target as Node ) ) {
118
+ this . dialog . close ( ) ;
119
+ this . dialog . remove ( ) ;
120
+ document . removeEventListener ( 'dblclick' , this . handleOutsideDoubleClick ) ;
121
+ }
110
122
}
111
123
124
+
112
125
private startDragging ( e : MouseEvent ) {
113
126
this . isDragging = true ;
114
127
const rect = this . dialog . getBoundingClientRect ( ) ;
@@ -219,21 +232,41 @@ class FootnoteDialog2 {
219
232
document . addEventListener ( 'mousemove' , this . drag . bind ( this ) ) ;
220
233
document . addEventListener ( 'mouseup' , this . stopDragging . bind ( this ) ) ;
221
234
235
+
236
+
222
237
this . dialog . addEventListener ( 'close' , ( ) => {
223
238
onSubmit ( this . textarea . value ) ;
224
239
this . dialog . remove ( ) ;
240
+ // 移除全局双击事件监听器
241
+ document . removeEventListener ( 'dblclick' , this . handleOutsideDoubleClick ) ;
225
242
} ) ;
226
- // Add close button handler
243
+
244
+ // 添加在弹窗外双击关闭弹窗的事件监听
245
+ document . addEventListener ( 'dblclick' , this . handleOutsideDoubleClick ) ;
246
+
247
+ // 添加关闭按钮事件
227
248
this . dialog . querySelector ( '.close-button' ) . addEventListener ( 'click' , ( ) => {
228
249
onSubmit ( this . textarea . value ) ;
229
250
this . dialog . close ( ) ;
230
251
this . dialog . remove ( ) ;
252
+ // 移除全局双击事件监听器
253
+ document . removeEventListener ( 'dblclick' , this . handleOutsideDoubleClick ) ;
231
254
} ) ;
232
255
233
256
this . dialog . showModal ( ) ;
234
257
this . textarea . focus ( ) ;
235
258
}
236
259
260
+ // 处理在弹窗外双击的事件
261
+ private handleOutsideDoubleClick = ( event : MouseEvent ) => {
262
+ if ( ! this . dialog . contains ( event . target as Node ) ) {
263
+ this . dialog . close ( ) ;
264
+ this . dialog . remove ( ) ;
265
+ // 移除全局双击事件监听器
266
+ document . removeEventListener ( 'dblclick' , this . handleOutsideDoubleClick ) ;
267
+ }
268
+ }
269
+
237
270
private startDragging ( e : MouseEvent ) {
238
271
this . isDragging = true ;
239
272
const rect = this . dialog . getBoundingClientRect ( ) ;
@@ -288,6 +321,15 @@ export default class PluginFootnote extends Plugin {
288
321
.protyle-wysiwyg [data-node-id] span[data-type*="custom-footnote-selected-text"] {
289
322
border-bottom: 2px dashed var(--b3-font-color5);
290
323
}
324
+ /* 导出pdf脚注引用为上标样式 */
325
+ .b3-typography a[custom-footnote],
326
+ #preview .protyle-wysiwyg a[custom-footnote] {
327
+ top: -0.5em;
328
+ font-size: 75%;
329
+ line-height: 0;
330
+ vertical-align: baseline;
331
+ position: relative;
332
+ }
291
333
292
334
/* 自定义脚注内容块样式 */
293
335
/* 脚注内容块如果设置为横排超级块则减少间距 */
0 commit comments