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;
}
.select-wrap {
display: inline-block;
overflow: hidden;
.customSelect {
height: 20px;
}
select.menuBtn {
color: #666;
border: none;
cursor: pointer;
margin: -1px -20px 0 0;
background: transparent;
span.customSelectOptions {
margin: 0;
width: 80px;
}
.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 {
+1 -1
View File
@@ -72,7 +72,7 @@
<script type='text/javascript'>
var oldIE = false;
</script>
<!-- [if lt IE 9]>
<!--[if lt IE 9]>
<script type="text/javascript">oldIE = true;</script>
<![endif]-->
+6 -7
View File
@@ -1,14 +1,13 @@
var langs = {
'en':'english',
'fr':'français',
'de':'deutsch',
'cn':'简体中文',
'de':'deutsch',
'en':'english',
'es': 'español',
'uk':'українська',
//'jp':'日本語',
'fr':'français',
'kr':'한국어',
'pl':'polski',
'ru':'русский',
'sv':'svenska',
'pl':'polski',
'tr':'türkçe',
'kr':'한국어'
'uk':'українська'
};
+17 -9
View File
@@ -116,17 +116,25 @@
.appendTo('body');
if(typeof langs != 'undefined'){
var selectWrap = $('<span>')
.addClass('select-wrap')
.appendTo(menu);
var select = $('<select>')
var customSelect = $('<span>')
.addClass('customSelect')
.addClass('menuBtn')
.append($('<option>').text("language."))
.change(Engine.switchLanguage)
.appendTo(selectWrap);
.appendTo(menu);
var options = $('<span>')
.addClass('customSelectOptions')
.appendTo(customSelect);
var optionsList = $('<ul>')
.appendTo(options);
$('<li>')
.text("language.")
.appendTo(optionsList);
$.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){
var lang = $(this).val();
var lang = $(dom).data("language");
if(document.location.href.search(/[\?\&]lang=[a-z]+/) != -1){
document.location.href = document.location.href.replace( /([\?\&]lang=)([a-z]+)/gi , "$1"+lang );
}else{