如何實現MARKDOWN網頁內跳轉?
■ 前言
在以下幾種情況下,需要能夠在網頁內快速定位跳轉:
如果網頁實在是太長了,后面和前面的敘述需要相互引用,實現網頁內跳轉可以便于閱讀和查看。
如果通過連接跳轉到另外的長網頁,也希望能夠快速定位到相關內容,則需要提供在鏈接網頁中跳轉的方式。
JohnTsai在他的博文 markdown技巧:實現網頁內跳轉 中給出了兩種使用markdown編輯器來獲得網頁內的跳轉方式。下面基于他介紹的方法,來給出網頁內跳轉實現方法。
01網頁內跳轉
1.基本HTML標簽實現方式
這個方式是由John Tsai給出的,分成兩步:
定義一個錨(id):
跳轉到的地方
使用markdown語法:
[點擊跳轉](#jump)
2.使用csdnnote命令
方法1: 選中CSDN markdown編輯器的一段文字,然后在使用csdnnote命令,輸入:
#: 直接將選中的文字轉換成HTML的跳轉語句,并將錨(空錨)放置在剪切板上,在后面粘貼到需要跳轉的地方。
#* :將選中的問題轉換成加粗跳轉語句,其它的與前面相同。
方法2: 不選中任何CSDN markdown中的問題,直接運行輸入:
#提示文字:將提示文字轉換成HTML跳轉語句,并粘貼在CSDN當前位置,生成錨拷貝到剪切板,以備后面粘貼到合適的地方。
#提示文字:與前面相同,只是將提示文字加粗*。
如果前面的提示文字是空,則只在當前位置粘貼錨。
###錨字符: 在當前位置粘貼錨,文字是錨文字.
02轉移到另外網頁內的跳轉
實現跳轉到另外網頁內的特點位置,只是在傳統的MARKDOWN的鏈接格式中,在URL字符串后面增加:#錨文字,即可。
比如下面示例中的情況。(可以點擊右側字符測試一下: 跳轉到另外網頁內部錨位置 )
[**跳轉到另外網頁內部錨位置**](https://zhuoqing.blog.csdn.net/article/details/107294049#1234)
1
當然,這需要有一個先決條件,那就是**#錨文字**在所跳轉的網頁內是存在的。如果這個網頁也是你自己的MARKDOWN編寫的話,就比較方便了。
※ 小結
采用MARKDOWN編輯文檔內部,利用HTML錨標示設定的方式,可以實現網頁內,網頁外的錨點之間的跳轉。這就大大方便對于網頁內容引用的精確性。
對于其它網頁的應用,必須知道其它網頁內的錨的位置。如果其它網頁是由你自己MARKDOWN編輯的,這個位置是已知的。但對于別人的網頁如何定義出其中的錨的標示,則還需要進一步的探究和實驗。
使用PYTHON命令中的csdnnote可以大大提高設定錨和跳轉的操作。
對于csdnnote其它功能,比如如何在MARKDOWN內部設定 注釋 , 注解 。請參照以下csdnnote的源程序來使用。
#!/usr/local/bin/python # -*- coding: gbk -*- #============================================================ # CSDNNOTE.PY -- by Dr. ZhuoQing 2020-02-12 # # Note: #============================================================ from head import * #------------------------------------------------------------ csdn_window = '寫文章-CSDN博客' #------------------------------------------------------------ csdnpaste = '' tspsendwindowkey(csdn_window, 'c', control=1) csdnpaste = clipboard.paste() #------------------------------------------------------------ num = '%d'%(int(time.time()) % 1e6) if len(sys.argv) < 2: if len(csdnpaste) == 0: stringinsert = tspinputline(hint='keyword:explanation') else: stringinsert = tspinputline(hint='%s:explanation'%csdnpaste) else: stringinsert = ' '.join(sys.argv[1:]) #------------------------------------------------------------ if len(csdnpaste) > 0 and len(stringinsert) > 0: if stringinsert[0] == '.' or stringinsert[0] == '*': notestr = '*[%s]: %s'%(csdnpaste, stringinsert[1:]) if stringinsert[0] == '.': csdnpaste = ' %s '%csdnpaste else: csdnpaste = '**%s**'%csdnpaste clipboard.copy(csdnpaste) tspsendwindowkey(csdn_window, 'v', control=1) clipboard.copy(notestr) printf('\a') tspfocuswindow(csdn_window) exit() if stringinsert[0] =='#': numstr = num stringinsert = sys.argv[1].replace('_', ' ') anchorstr = '' if len(sys.argv) > 2: anchorstr = ' '.join(sys.argv[2:]) if anchorstr[0] == '*': anchorstr = '**%s**'%anchorstr[1:] if len(stringinsert) > 1: numstr = stringinsert[1:] csdnpaste1 = '[%s](#%s)'%(csdnpaste, numstr) if len(stringinsert) >= 2: if stringinsert[1] == '*': if len(stringinsert[2:]) > 0: numstr = stringinsert[2:] csdnpaste1 = '[**%s**](#%s)'%(csdnpaste, numstr) clipboard.copy(csdnpaste1) tspsendwindowkey(csdn_window, 'v', control=1) notestr = '%s'%(numstr, anchorstr) clipboard.copy(notestr) printf('\a') tspfocuswindow(csdn_window) exit() #------------------------------------------------------------ if len(csdnpaste) == 0 and len(stringinsert) > 0: strlen = 0 numstr = num if stringinsert[0] =='#': stringinsert = sys.argv[1].replace('_', ' ') anchorstr = '' if len(sys.argv) > 2: anchorstr = ' '.join(sys.argv[2:]) if anchorstr[0] == '*': anchorstr = '**%s**'%anchorstr[1:] csdnpaste1 = '[%s](#%s)'%(stringinsert[1:], num) strlen = len(stringinsert[1:]) if strlen > 0: newstr = stringinsert[1:] sharpnum = newstr.find('#') if sharpnum >= 0: csdnpaste1 = '[%s](#%s)'%(newstr[:sharpnum], newstr[sharpnum+1:]) strlen = sharpnum numstr = newstr[sharpnum+1:] #---------------------------------------------------- if len(stringinsert) >= 2: if stringinsert[1] == '*': csdnpaste1 = '[**%s**](#%s)'%(stringinsert[2:], num) strlen = stringinsert[2:] if strlen > 0: newstr = stringinsert[2:] sharpnum = newstr.find('#') if sharpnum >= 0: csdnpaste1 = '[%s](#%s)'%(newstr[:sharpnum], newstr[sharpnum+1:]) strlen = sharpnum numstr = newstr[sharpnum+1:] if len(stringinsert) >= 3: if stringinsert[0:3] == '###': if len(stringinsert[3:]) > 0: if stringinsert[-1] == '#': stringinsert = stringinsert[:-1] anchorstr = stringinsert[3:] elif stringinsert[-1] == '*': stringinsert = stringinsert[:-1] anchorstr = "**"+stringinsert[3:]+"**" notestr = '%s'%(stringinsert[3:], anchorstr) clipboard.copy(notestr) tspsendwindowkey(csdn_window, 'v', control=1) printf('\a') tspfocuswindow(csdn_window) exit() else: strlen = 0 #---------------------------------------------------- if strlen > 0: clipboard.copy(csdnpaste1) tspsendwindowkey(csdn_window, 'v', control=1) notestr = '%s'%(numstr, anchorstr) clipboard.copy(notestr) if strlen == 0: tspsendwindowkey(csdn_window, 'v', control=1) printf('\a') tspfocuswindow(csdn_window) exit() #------------------------------------------------------------ doublecolumn = stringinsert.find('::') if doublecolumn > 0: stringinsert = '**%s**:%s'%(stringinsert[0:doublecolumn], stringinsert[doublecolumn+2:]) #------------------------------------------------------------ if len(csdnpaste) == 0: notestr = '[^%s]:%s'%(num, stringinsert) + '\r\n' clipboard.copy(notestr) tspsendwindowkey(csdn_window, 'v', control=1) clipboard.copy('[^%s]'%num) else: clipboard.copy('**%s**[^%s]'%(csdnpaste, num)) tspsendwindowkey(csdn_window, 'v', control=1) if stringinsert[0] == ':': notestr = '\r\n[^%s]:%s:%s'%(num, csdnpaste, stringinsert[1:]) clipboard.copy(notestr) tspsendwindowkey(csdn_window, 'v', control=1) else: notestr = '[^%s]:%s:%s'%(num, csdnpaste, stringinsert) clipboard.copy(notestr) tspfocuswindow(csdn_window) printf('\a') #------------------------------------------------------------ # END OF FILE : CSDNNOTE.PY #============================================================
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
HTML Markdown
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。