Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit952c9ee

Browse files
authored
Replace jQuery with vanilla JavaScript (#160)
1 parent57f3c65 commit952c9ee

File tree

1 file changed

+76
-61
lines changed

1 file changed

+76
-61
lines changed

‎templates/switchers.js

Lines changed: 76 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -4,51 +4,52 @@
44
if(!String.prototype.startsWith){
55
Object.defineProperty(String.prototype,'startsWith',{
66
value:function(search,rawPos){
7-
varpos=rawPos>0 ?rawPos|0 :0;
7+
constpos=rawPos>0 ?rawPos|0 :0;
88
returnthis.substring(pos,pos+search.length)===search;
99
}
1010
});
1111
}
1212

1313
// Parses versions in URL segments like:
1414
// "3", "dev", "release/2.7" or "3.6rc2"
15-
varversion_regexs=[
15+
constversion_regexs=[
1616
'(?:\\d)',
1717
'(?:\\d\\.\\d[\\w\\d\\.]*)',
1818
'(?:dev)',
1919
'(?:release/\\d.\\d[\\x\\d\\.]*)'];
2020

21-
varall_versions=$VERSIONS;
22-
varall_languages=$LANGUAGES;
21+
constall_versions=$VERSIONS;
22+
constall_languages=$LANGUAGES;
2323

2424
functionquote_attr(str){
2525
return'"'+str.replace('"','\\"')+'"';
2626
}
2727

2828
functionbuild_version_select(release){
29-
varbuf=['<select>'];
30-
varmajor_minor=release.split(".").slice(0,2).join(".");
29+
letbuf=['<select>'];
30+
constmajor_minor=release.split(".").slice(0,2).join(".");
3131

32-
$.each(all_versions,function(version,title){
33-
if(version==major_minor)
32+
Object.entries(all_versions).forEach(function([version,title]){
33+
if(version===major_minor){
3434
buf.push('<option value='+quote_attr(version)+' selected="selected">'+release+'</option>');
35-
else
35+
}else{
3636
buf.push('<option value='+quote_attr(version)+'>'+title+'</option>');
37+
}
3738
});
3839

3940
buf.push('</select>');
4041
returnbuf.join('');
4142
}
4243

4344
functionbuild_language_select(current_language){
44-
varbuf=['<select>'];
45+
letbuf=['<select>'];
4546

46-
$.each(all_languages,function(language,title){
47-
if(language==current_language)
48-
buf.push('<option value="'+language+'" selected="selected">'+
49-
all_languages[current_language]+'</option>');
50-
else
47+
Object.entries(all_languages).forEach(function([language,title]){
48+
if(language===current_language){
49+
buf.push('<option value="'+language+'" selected="selected">'+title+'</option>');
50+
}else{
5151
buf.push('<option value="'+language+'">'+title+'</option>');
52+
}
5253
});
5354
if(!(current_languageinall_languages)){
5455
// In case we're browsing a language that is not yet in all_languages.
@@ -62,29 +63,31 @@
6263

6364
functionnavigate_to_first_existing(urls){
6465
// Navigate to the first existing URL in urls.
65-
varurl=urls.shift();
66+
consturl=urls.shift();
6667
if(urls.length==0||url.startsWith("file:///")){
6768
window.location.href=url;
6869
return;
6970
}
70-
$.ajax({
71-
url:url,
72-
success:function(){
73-
window.location.href=url;
74-
},
75-
error:function(){
71+
fetch(url)
72+
.then(function(response){
73+
if(response.ok){
74+
window.location.href=url;
75+
}else{
76+
navigate_to_first_existing(urls);
77+
}
78+
})
79+
.catch(function(error){
7680
navigate_to_first_existing(urls);
77-
}
78-
});
81+
});
7982
}
8083

8184
functionon_version_switch(){
82-
varselected_version=$(this).children('option:selected').attr('value')+'/';
83-
varurl=window.location.href;
84-
varcurrent_language=language_segment_from_url();
85-
varcurrent_version=version_segment_from_url();
86-
varnew_url=url.replace('/'+current_language+current_version,
87-
'/'+current_language+selected_version);
85+
constselected_version=this.options[this.selectedIndex].value+'/';
86+
consturl=window.location.href;
87+
constcurrent_language=language_segment_from_url();
88+
constcurrent_version=version_segment_from_url();
89+
constnew_url=url.replace('/'+current_language+current_version,
90+
'/'+current_language+selected_version);
8891
if(new_url!=url){
8992
navigate_to_first_existing([
9093
new_url,
@@ -98,13 +101,13 @@
98101
}
99102

100103
functionon_language_switch(){
101-
varselected_language=$(this).children('option:selected').attr('value')+'/';
102-
varurl=window.location.href;
103-
varcurrent_language=language_segment_from_url();
104-
varcurrent_version=version_segment_from_url();
105-
if(selected_language=='en/')// Special 'default' case forenglish.
104+
letselected_language=this.options[this.selectedIndex].value+'/';
105+
consturl=window.location.href;
106+
constcurrent_language=language_segment_from_url();
107+
constcurrent_version=version_segment_from_url();
108+
if(selected_language=='en/')// Special 'default' case forEnglish.
106109
selected_language='';
107-
varnew_url=url.replace('/'+current_language+current_version,
110+
letnew_url=url.replace('/'+current_language+current_version,
108111
'/'+selected_language+current_version);
109112
if(new_url!=url){
110113
navigate_to_first_existing([
@@ -117,9 +120,9 @@
117120
// Returns the path segment of the language as a string, like 'fr/'
118121
// or '' if not found.
119122
functionlanguage_segment_from_url(){
120-
varpath=window.location.pathname;
121-
varlanguage_regexp='/((?:'+Object.keys(all_languages).join("|")+')/)'
122-
varmatch=path.match(language_regexp);
123+
constpath=window.location.pathname;
124+
constlanguage_regexp='/((?:'+Object.keys(all_languages).join("|")+')/)'
125+
constmatch=path.match(language_regexp);
123126
if(match!==null)
124127
returnmatch[1];
125128
return'';
@@ -128,35 +131,36 @@
128131
// Returns the path segment of the version as a string, like '3.6/'
129132
// or '' if not found.
130133
functionversion_segment_from_url(){
131-
varpath=window.location.pathname;
132-
varlanguage_segment=language_segment_from_url();
133-
varversion_segment='(?:(?:'+version_regexs.join('|')+')/)';
134-
varversion_regexp=language_segment+'('+version_segment+')';
135-
varmatch=path.match(version_regexp);
134+
constpath=window.location.pathname;
135+
constlanguage_segment=language_segment_from_url();
136+
constversion_segment='(?:(?:'+version_regexs.join('|')+')/)';
137+
constversion_regexp=language_segment+'('+version_segment+')';
138+
constmatch=path.match(version_regexp);
136139
if(match!==null)
137140
returnmatch[1];
138141
return''
139142
}
140143

141144
functioncreate_placeholders_if_missing(){
142-
varversion_segment=version_segment_from_url();
143-
varlanguage_segment=language_segment_from_url();
144-
varindex="/"+language_segment+version_segment;
145+
constversion_segment=version_segment_from_url();
146+
constlanguage_segment=language_segment_from_url();
147+
constindex="/"+language_segment+version_segment;
145148

146-
if($('.version_switcher_placeholder').length)
149+
if(document.querySelectorAll('.version_switcher_placeholder').length>0){
147150
return;
151+
}
148152

149-
varhtml='<span></span> \
153+
consthtml='<span></span> \
150154
<span class="version_switcher_placeholder"></span> \
151155
<a href="/" id="indexlink">Documentation</a> &#187;';
152156

153-
varprobable_places=[
157+
constprobable_places=[
154158
"body>div.related>ul>li:not(.right):contains('Documentation'):first",
155159
"body>div.related>ul>li:not(.right):contains('documentation'):first",
156160
];
157161

158-
for(vari=0;i<probable_places.length;i++){
159-
varprobable_place=$(probable_places[i]);
162+
for(leti=0;i<probable_places.length;i++){
163+
letprobable_place=$(probable_places[i]);
160164
if(probable_place.length==1){
161165
probable_place.html(html);
162166
document.getElementById('indexlink').href=index;
@@ -165,18 +169,29 @@
165169
}
166170
}
167171

168-
$(document).ready(function(){
169-
varlanguage_segment=language_segment_from_url();
170-
varcurrent_language=language_segment.replace(/\/+$/g,'')||'en';
171-
varversion_select=build_version_select(DOCUMENTATION_OPTIONS.VERSION);
172+
document.addEventListener('DOMContentLoaded',function(){
173+
constlanguage_segment=language_segment_from_url();
174+
constcurrent_language=language_segment.replace(/\/+$/g,'')||'en';
175+
constversion_select=build_version_select(DOCUMENTATION_OPTIONS.VERSION);
172176

173177
create_placeholders_if_missing();
174-
$('.version_switcher_placeholder').html(version_select);
175-
$('.version_switcher_placeholder select').bind('change',on_version_switch);
176178

177-
varlanguage_select=build_language_select(current_language);
179+
letplaceholders=document.querySelectorAll('.version_switcher_placeholder');
180+
placeholders.forEach(function(placeholder){
181+
placeholder.innerHTML=version_select;
178182

179-
$('.language_switcher_placeholder').html(language_select);
180-
$('.language_switcher_placeholder select').bind('change',on_language_switch);
183+
letselectElement=placeholder.querySelector('select');
184+
selectElement.addEventListener('change',on_version_switch);
185+
});
186+
187+
constlanguage_select=build_language_select(current_language);
188+
189+
placeholders=document.querySelectorAll('.language_switcher_placeholder');
190+
placeholders.forEach(function(placeholder){
191+
placeholder.innerHTML=language_select;
192+
193+
letselectElement=placeholder.querySelector('select');
194+
selectElement.addEventListener('change',on_language_switch);
195+
});
181196
});
182197
})();

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp