1
+ ( function ( ) {
2
+ var content = [ ] ;
3
+
4
+ var escapeHtml = function ( html ) {
5
+ let str = html ;
6
+ str = str . replace ( / & / g, '&' ) ;
7
+ str = str . replace ( / < / g, '<' ) ;
8
+ str = str . replace ( / > / g, '>' ) ;
9
+ str = str . replace ( / " / g, '"' ) ;
10
+ str = str . replace ( / ' / g, ''' ) ;
11
+ return str ;
12
+ }
13
+
14
+ var clearHtml = function ( html ) {
15
+ let str = html ;
16
+ str = str . replace ( / & a m p ; / g, '' ) ;
17
+ str = str . replace ( / & l t ; / g, '' ) ;
18
+ str = str . replace ( / & g t ; / g, '' ) ;
19
+ str = str . replace ( / & q u o t ; / g, '' ) ;
20
+ str = str . replace ( / & # 0 3 9 ; / g, '' ) ;
21
+ return str ;
22
+ }
23
+
24
+ var randStr = function ( ) {
25
+ return Math . random ( ) . toString ( 36 ) . substr ( 2 ) ;
26
+ } ;
27
+
28
+ var findTitle = function ( ele ) {
29
+ var findPrevs = function ( ele ) {
30
+ var children = $ ( ele ) . parent ( ) . children ( ) ;
31
+ var prevs = [ ] ;
32
+ var findIt = false ;
33
+ children = Array . prototype . slice . call ( children ) ;
34
+ children . forEach ( function ( subEle ) {
35
+ if ( $ ( subEle ) . is ( $ ( ele ) ) ) {
36
+ findIt = true ;
37
+ }
38
+ if ( findIt === false && $ ( subEle ) . text ( ) != "" ) {
39
+ prevs . push ( subEle ) ;
40
+ }
41
+ } ) ;
42
+ return prevs ;
43
+ } ;
44
+
45
+ var findH = function ( eles ) {
46
+ var _eles = Array . prototype . slice . call ( eles ) ;
47
+ _eles . reverse ( ) ;
48
+ var title = "" ;
49
+ var id = "" ;
50
+ _eles . forEach ( function ( item ) {
51
+ if ( ! title ) {
52
+ if ( item . nodeName [ 0 ] === "H" ) {
53
+ title = $ ( item ) . text ( ) ;
54
+ id = $ ( item ) . attr ( "id" ) ;
55
+ }
56
+ }
57
+ } ) ;
58
+ return {
59
+ text : title ,
60
+ id : id
61
+ } ;
62
+ } ;
63
+ var prevs = findPrevs ( ele ) ;
64
+ if ( prevs . length ) {
65
+ return findH ( prevs ) ;
66
+ }
67
+ } ;
68
+
69
+ window . searchData = function ( keyword ) {
70
+ var searchResult = [ ] ;
71
+ content . forEach ( function ( item , index ) {
72
+ var tempHtml = "<div id='" + randStr ( ) + "'></div>" ;
73
+ var tempEle = $ ( tempHtml ) ;
74
+ var findArray = [ ] ;
75
+ tempEle . html ( clearHtml ( item . content ) ) ;
76
+ findArray = tempEle . find ( ":contains('" + keyword + "')" ) ;
77
+ findArray = Array . prototype . slice . call ( findArray ) ;
78
+ if ( findArray . length ) {
79
+ findArray . forEach ( function ( ele ) {
80
+ var findContent = $ ( ele ) . text ( ) ;
81
+ findContent = findContent [ 0 ] === "<" ? $ ( findContent ) . text ( ) : findContent ;
82
+ findContent = escapeHtml ( findContent ) ;
83
+ findContent = findContent . replace ( new RegExp ( keyword , 'g' ) , "<b>" + keyword + "</b>" ) ;
84
+ var hObj = findTitle ( ele ) ;
85
+ if ( hObj ) {
86
+ searchResult . push ( {
87
+ context : item . context ,
88
+ title : hObj . text ,
89
+ hid : hObj . id ,
90
+ findContent : findContent
91
+ } ) ;
92
+ }
93
+ } ) ;
94
+ }
95
+ } ) ;
96
+ return searchResult ;
97
+ } ;
98
+ } ) ( ) ;
0 commit comments