//------------------------------------------------------------------- // ブラウザー情報を取得 //------------------------------------------------------------------- function getTargetBrowser(){ var userAgent = window.navigator.userAgent.toLowerCase(); try{ // Chrome if(userAgent.indexOf('chrome') != -1) { target_browser = 'chrome'; // Android 2系 }else if( userAgent.indexOf('android 2.') != -1 ){ target_browser = 'android 2'; }else if( userAgent.indexOf('android 1.') != -1 ){ target_browser = 'android 2'; }else if( userAgent.indexOf('android 3') != -1 ){ target_browser = 'android 3'; }else if( userAgent.indexOf('android 4') != -1 ){ target_browser = 'android 4'; }else if( userAgent.indexOf('iphone') != -1 ){ target_browser = 'iphone'; }else if( userAgent.indexOf('ipad') != -1 ){ target_browser = 'ipad'; }else{ target_browser = 'unknown'; } }catch( e ){ // Chrome if(userAgent.indexOf('chrome') != -1) { target_browser = 'chrome'; // Android 2.3系 }else if( userAgent.indexOf('android 2') != -1 ){ target_browser = 'android 2'; }else if( userAgent.indexOf('android 3') != -1 ){ target_browser = 'android 3'; }else if( userAgent.indexOf('android 4') != -1 ){ target_browser = 'android 4'; }else if( userAgent.indexOf('iPhone') != -1 ){ target_browser = 'iphone'; }else if( userAgent.indexOf('iPad') != -1 ){ target_browser = 'ipad'; }else{ target_browser = 'unknown'; } } return target_browser; } //------------------------------------------------------------------- // autoZoom //------------------------------------------------------------------- function autoZoom(){ var obj = document.getElementsByTagName("body"); obj[0].style.width = '480px'; if(getTargetBrowser() == "chrome"){ obj[0].style.height = '100%'; obj[0].style.overflowX = 'hidden'; obj[0].style.overflowY = 'auto'; } obj[0].style.display = 'none'; var zoom_value = document.body.clientWidth / 480; try{ obj[0].style.display = 'none'; if(zoom_value > 1){ obj[0].style.zoom = zoom_value; if(typeof jQuery != "undefined"){ $(".flickitems ul li div").css("padding-left", "5px"); // ワークアラウンドとしての対応です } }else{ obj[0].style.zoom = 1; } obj[0].style.display = 'block'; }catch( e ){ alert(e); } obj[0].style.display = 'block'; } //************************************************************************* // 読み込み完了時 //************************************************************************* window.onLoad = function(){ adjust(); autoScroll(); if(getTargetBrowser() == 'android 4'){ autoZoom(); } } //************************************************************************* // 回転時 //************************************************************************* window.onorientationchange = function(){ var now = new Date(); if(getTargetBrowser() == 'android 4'){ var obj = document.getElementsByTagName("body"); obj[0].style.display = 'none'; } //adjust(); if(getTargetBrowser() == 'android 4'){ var obj = document.getElementsByTagName("body"); obj[0].style.display = 'block'; } } //************************************************************************* // リサイズ時 //************************************************************************* window.onresize = function(){ if(getTargetBrowser() == 'android 4'){ var obj = document.getElementsByTagName("body"); obj[0].style.display = 'none'; } adjust(); if(getTargetBrowser() == 'android 4'){ autoZoom(); var obj = document.getElementsByTagName("body"); obj[0].style.display = 'block'; } } var latest_orientation = 360; var latest_scale = 1.0; var set_width_flag = false; function autoScroll(){ scrollTo(0, 1); } //------------------------------------------------------------------- // adjust //------------------------------------------------------------------- function adjust(){ setTimeout(redraw,500); } //------------------------------------------------------------------- // setScale //------------------------------------------------------------------- function setScale(scale){ try{ var obj = document.getElementsByTagName("html"); if(getTargetBrowser() != "android 2"){ obj[0].style.overflowX = 'hidden'; obj[0].style.overflowY = 'auto'; } obj[0].style.width = '480px'; }catch( e ){ //alert("e1:" + e.toString()); } try{ var obj = document.getElementsByTagName("body"); if(getTargetBrowser() != "android 2"){ obj[0].style.overflowX = 'hidden'; obj[0].style.overflowY = 'auto'; } obj[0].style.width = '480px'; }catch( e ){ //alert("e2:" + e.toString()); } var content_value = ' initial-scale=' + scale + '' + ' ,minimum-scale=' + scale + ' ,maximum-scale=' + scale; //+ ' ,user-scalable=0'; // + ' ,width=device-width'; try{ var obj = document.getElementById('view_port'); obj.content = content_value; }catch( e ){ } } //------------------------------------------------------------------- // setWidth //------------------------------------------------------------------- function setWidth(){ } //------------------------------------------------------------------- // getWidth //------------------------------------------------------------------- function getWidth(){ //console.log("getWidth"); var userAgent = window.navigator.userAgent.toLowerCase(); try{ // Chrome if(userAgent.indexOf('chrome') != -1) { current_width = window.outerWidth; // Android標準ブラウザ }else if( userAgent.indexOf('android') != -1 ){ // Android 2.3系 if( userAgent.indexOf('android 2') != -1 ){ setScale(1); current_width = window.outerWidth; current_width = adjustWidth(current_width); // ワークアラウンド対応 current_width = current_width / (480 / 320); }else{ current_width = window.innerWidth; current_width = adjustWidth(current_width); } // iOSなど }else{ current_width = window.innerWidth; if(getTargetBrowser() == "iphone"){ current_width = 320; }else if(getTargetBrowser() == "ipad"){ current_width = 640; }else{ current_width = window.innerWidth; } } }catch( e ){ // Chrome if(userAgent.indexOf('chrome') != -1) { current_width = window.outerWidth; // 標準ブラウザ }else{ // Android 2.3系 if( userAgent.indexOf('android 2.') != -1 ){ current_width = window.outerWidth; }else{ current_width = document.documentElement.clientWidth; } } } return current_width; } //------------------------------------------------------------------- // redraw //------------------------------------------------------------------- function redraw(){ var userAgent = window.navigator.userAgent.toLowerCase(); if(latest_orientation != window.orientation){ var current_width = 0; current_width = getWidth(); //alert("current_width:" + current_width); var scale = current_width / 480; scale = Math.round(scale * 100) / 100; // 'android 4' の場合は zoomで拡大するため if(getTargetBrowser() == 'android 4'){ if(scale > 1){ scale = 1.0; } } latest_orientation = window.orientation; setScale(scale); latest_scale = scale; if(!set_width_flag){ setWidth(); } autoScroll(); } } function adjustWidth(width){ var userAgent = window.navigator.userAgent.toLowerCase(); // 特定機種向けの倍率補正処理 var target_device = new Array(); target_device["sc-05d"] = 0.75; target_device["sh-06d"] = 0.75; for (var i in target_device) { // 倍率補正対象機種の場合 if(userAgent.indexOf(i) != -1) { width = width * target_device[i]; break; } } return width; } redraw();