Fix cross-browser support for language select

This fixes cross-browser support for the language select box by
replacing it with a custom menu box.
This commit is contained in:
Blake Grotewold
2014-10-28 16:30:57 -04:00
parent b512153d73
commit dc7afcbd75
4 changed files with 64 additions and 26 deletions
+40 -9
View File
@@ -69,18 +69,49 @@ div#header {
margin-left: 20px; margin-left: 20px;
} }
.select-wrap { .customSelect {
display: inline-block;
overflow: hidden;
height: 20px; height: 20px;
} }
select.menuBtn { span.customSelectOptions {
color: #666; margin: 0;
border: none; width: 80px;
cursor: pointer; }
margin: -1px -20px 0 0;
background: transparent; .customSelectOptions > ul {
max-height: 20px;
width: 80px;
overflow: hidden;
-webkit-transition: max-height 1s;
transition: max-height 1s;
padding: 0;
margin: 0;
bottom: 0;
position: absolute;
right: 0;
}
.customSelectOptions > ul:hover {
max-height: 400px;
}
.customSelectOptions > ul > li {
padding: 0 0 3px 0;
list-style-type: none;
height: 20px;
}
.customSelectOptions > ul > li:last-child {
padding: 0;
}
.customSelectOptions > ul > li:hover {
text-decoration: underline;
}
.customSelectOptions > ul > li:first-child:hover {
cursor: default;
text-decoration: none;
} }
.menu span:hover { .menu span:hover {
+1 -1
View File
@@ -72,7 +72,7 @@
<script type='text/javascript'> <script type='text/javascript'>
var oldIE = false; var oldIE = false;
</script> </script>
<!-- [if lt IE 9]> <!--[if lt IE 9]>
<script type="text/javascript">oldIE = true;</script> <script type="text/javascript">oldIE = true;</script>
<![endif]--> <![endif]-->
+6 -7
View File
@@ -1,14 +1,13 @@
var langs = { var langs = {
'en':'english',
'fr':'français',
'de':'deutsch',
'cn':'简体中文', 'cn':'简体中文',
'de':'deutsch',
'en':'english',
'es': 'español', 'es': 'español',
'uk':'українська', 'fr':'français',
//'jp':'日本語', 'kr':'한국어',
'pl':'polski',
'ru':'русский', 'ru':'русский',
'sv':'svenska', 'sv':'svenska',
'pl':'polski',
'tr':'türkçe', 'tr':'türkçe',
'kr':'한국어' 'uk':'українська'
}; };
+17 -9
View File
@@ -116,17 +116,25 @@
.appendTo('body'); .appendTo('body');
if(typeof langs != 'undefined'){ if(typeof langs != 'undefined'){
var selectWrap = $('<span>') var customSelect = $('<span>')
.addClass('select-wrap') .addClass('customSelect')
.appendTo(menu);
var select = $('<select>')
.addClass('menuBtn') .addClass('menuBtn')
.append($('<option>').text("language.")) .appendTo(menu);
.change(Engine.switchLanguage) var options = $('<span>')
.appendTo(selectWrap); .addClass('customSelectOptions')
.appendTo(customSelect);
var optionsList = $('<ul>')
.appendTo(options);
$('<li>')
.text("language.")
.appendTo(optionsList);
$.each(langs, function(name,display){ $.each(langs, function(name,display){
$('<option>').text(display).val(name).appendTo(select) $('<li>')
.text(display)
.attr('data-language', name)
.on("click", function() { Engine.switchLanguage(this); })
.appendTo(optionsList);
}); });
} }
@@ -660,7 +668,7 @@
}, },
switchLanguage: function(dom){ switchLanguage: function(dom){
var lang = $(this).val(); var lang = $(dom).data("language");
if(document.location.href.search(/[\?\&]lang=[a-z]+/) != -1){ if(document.location.href.search(/[\?\&]lang=[a-z]+/) != -1){
document.location.href = document.location.href.replace( /([\?\&]lang=)([a-z]+)/gi , "$1"+lang ); document.location.href = document.location.href.replace( /([\?\&]lang=)([a-z]+)/gi , "$1"+lang );
}else{ }else{