2016-06-16 23 views
2

私はMonaca/Cordova/OnsenUIとIframeを使用しています。私はこれを最後の4日間スムーズに動かそうとしています。Monaca(コルドバ)iframe =非常にバグ?

目的は、Iframeを持つMonacaで簡単なアプリケーションを作成することでした。そしてiframeにウェブサイトを表示します。だから、ネイティブアプリケーションのように感じるだろうが、実際にはカスタムツールバーが追加されたWebブラウザに過ぎません。

私の問題は、次のとおりです。

  • のiframeのコンテンツ読み込み速度は、デフォルトのモバイルSafariブラウザに比べて、非常に遅いです。
  • ナビゲーション(スクロール、リンクをクリック)は非常にバグがあり、時にはうまくいきません。

コード:

のindex.html:style.cssには

<!DOCTYPE HTML> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, user-scalable=no"> 
    <script src="components/loader.js"></script> 

    <link rel="stylesheet" href="components/loader.css"> 
    <link rel="stylesheet" href="lib/onsenui/css/onsenui.css"> 
    <link rel="stylesheet" href="lib/onsenui/css/onsen-css-components.css"> 
    <link rel="stylesheet" href="css/style.css"--> 
    <script> 
    $(function() 
    { 
     $('#iframe').load(function() 
     { 
      var phoneWidth = $(window).width(); 
      $('#iframe').contents().find('html').css("max-width", phoneWidth); 
     }); 
    }); 
    </script> 
    <script> 
     $(function() 
     { // Hide iframe while loading 
      $('#loader').show(); 
      $('#iframe').hide(); 

      $('#iframe').load(function(){ 
       // If logged in -> go to home page 
       if ($('#iframe').attr("src") == "https://world-switch.com/komaki/mypage/" && $('#iframe').contents().find('#wrapper').length == 0){ // logged in 
        $('#iframe').attr("src","https://world-switch.com/komaki/"); 
       }else{ 
        // set size iframe content: forces mobile styling 
        var phoneWidth = $(window).width(); 
        $('#iframe').contents().find('html').css("max-width", phoneWidth); 
        $('#iframe').contents().find('#hLogoCenter').attr("class", "vhidden"); 
        $('#iframe').show(); // show iframe 
        $('#loader').hide(); // hides loading icon 
        navigator.splashscreen.hide(); // hides splash screen 
       } 
      }); 
     }); 

     function fnSetURL(url){ 
      $('#loader').show(); 
      $('#iframe').attr("src",url); 
      $('#iframe').hide(); 
     }  
    </script>  
    </head> 
    <body> 
     <!-- Transparent Top toolbar --> 
     <div class="navigation-bar navigation-bar--transparent"> 
      <div class="navigation-bar__left"></div> 
      <div class="navigation-bar__center"></div> 
      <div class="navigation-bar__right"></div> 
     </div> 

     <div id="iframe_mask"> 
      <div id="loader"> 
       <i class="fa fa-refresh fa-spin fa-2x fa-fw"></i> 
      </div> 
      <iframe id="iframe" src="https://world-switch.com/komaki/mypage/" height="100%" width="100%"></iframe> 
     </div> 

     <!-- Bottom tab bar --> 
     <div class="tab-bar tab-bar--top-border"> 
      <label class="tab-bar__item"> 
      <input type="radio" id="0" name="top-tab-bar-b" onClick="fnSetURL('https://world-switch.com/komaki/');"> 
      <button class="tab-bar__button tab-bar--top-border__button"> 
       <span><i class="fa fa-home" aria-hidden="true"></i></span> 
      </button> 
      </label> 
      <label class="tab-bar__item tab-bar--top-border__item"> 
      <input type="radio" id="1" name="top-tab-bar-b" onClick="fnSetURL('https://world-switch.com/komaki/products/list.php');"> 
      <button class="tab-bar__button tab-bar--top-border__button"> 
       <span><i class="fa fa-search" aria-hidden="true"></i></span> 
      </button> 
      </label> 
      <label class="tab-bar__item tab-bar--top-border__item"> 
      <input type="radio" id="2" name="top-tab-bar-b" onClick="fnSetURL('https://world-switch.com/komaki/products/genre.php?ctg=brand&clm=2');"> 
      <button class="tab-bar__button tab-bar--top-border__button"> 
       <span><i class="fa fa-folder-open-o" aria-hidden="true"></i></span> 
      </button> 
      </label> 
      <label class="tab-bar__item tab-bar--top-border__item"> 
      <input type="radio" id="3" name="top-tab-bar-b" onClick="fnSetURL('https://world-switch.com/komaki/mypage/favorite.php');"> 
      <button class="tab-bar__button tab-bar--top-border__button"> 
       <span><i class="fa fa-heart" aria-hidden="true"></i></span> 
      </button> 
      </label>  
     </div>   
    </body> 
</html> 

/**/ 

html,body 
{ 
    width:100%; 
    height:100%; 
    padding:0; 
    margin:0; 
} 
iframe 
{ 
    padding:0; 
    margin:0; 
    border:0; 
} 
#iframe_mask { 
    height:calc(100% - 49px); 
    width:100%; 
    -webkit-overflow-scrolling: touch; 
    overflow-y: scroll; 
} 
#loader{ 
    position: absolute; 
    left: 45%; 
    top: 48%; 
    z-index: 9999; 
} 
.navigation-bar{ 
    background: url('https://world-switch.com/komaki/user_data/packages/kyoto-komaki.jp/default/img/header_logo_m.png') #000 no-repeat 50% 50%; 
    background-size: 120px; 
    color:#fff; 
} 
.tab-bar{ 
    background-color: #000; 
} 
:checked + .tab-bar__button { 
    color: #fff; 
} 
:checked + .tab-bar--top-border__button { 
    border-bottom-color: #fff; 
} 

のconfig.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<widget xmlns="http://www.w3.org/ns/widgets" id="com.example.helloworld" version="1.0.0"> 
    <name>Minimum Template</name> 
    <description></description> 
    <author></author> 
    <content src="index.html" /> 
    <access origin="*"/> 
    <allow-navigation href="*" /> 
    <allow-intent href="itms:*" /> 
    <allow-intent href="itms-apps:*" /> 

    <preference name="DisallowOverscroll" value="true"/> 
    <preference name="Orientation" value="default"/> 

    <preference name="loglevel" value="DEBUG" /> 
    <preference name="AndroidLaunchMode" value="singleTop" /> 
    <preference name="ErrorUrl" value=""/> 
    <preference name="Fullscreen" value="false"/> 
    <preference name="KeepRunning" value="true"/> 
    <preference name="SplashScreen" value="screen"/> 
    <preference name="SplashScreenDelay" value="1000"/> 

    <preference name="AllowInlineMediaPlayback" value="false" /> 
    <preference name="AutoHideSplashScreen" value="true" /> 
    <preference name="BackupWebStorage" value="cloud" /> 
    <preference name="EnableViewportScale" value="false" /> 
    <preference name="FadeSplashScreen" value="true" /> 
    <preference name="FadeSplashScreenDuration" value=".25" /> 
    <preference name="KeyboardDisplayRequiresUserAction" value="true" /> 
    <preference name="MediaPlaybackRequiresUserAction" value="false" /> 
    <preference name="ShowSplashScreenSpinner" value="false" /> 
    <preference name="SuppressesIncrementalRendering" value="false" /> 
    <preference name="TopActivityIndicator" value="gray" /> 
    <preference name="GapBetweenPages" value="0" /> 
    <preference name="PageLength" value="0" /> 
    <preference name="PaginationBreakingMode" value="page" /> 
    <preference name="PaginationMode" value="unpaginated" /> 
    <feature name="LocalStorage"> 
    <param name="ios-package" value="CDVLocalStorage" /> 
    </feature> 
    <preference name="UIWebViewDecelerationSpeed" value="normal" /> 

    <preference name="monaca:AndroidIsPackageNameSeparate" value="false"/> 
    <preference name="monaca:targetFamilyiPhone" value="1"/> 
    <preference name="monaca:targetFamilyiPad" value="1"/> 
</widget> 

インストールコンプonents:= 2.0.3コルドバを有効

版モナカコアユーティリティ

  • 1.0.0 =版

    • コルドバ(PhoneGapの)ローダ版= 2.0.4
    • jQueryの(モナカ版)プラグイン:

      • InAppBrowser
      • モナカプラグイン
      • スプラッシュスクリーン
      • ステータスバー
      • 私はこのテンプレートから開始

      ホワイトリスト:(温泉UI v2の+ JavaScriptのタブバー)

    私は

    • 温泉UI V2 JSタブバーiOS用Monaca Debuggerアプリケーションを使用してiphone6でWi-Fiをテストする

      ご協力いただきありがとうございます。

    答えて

    0

    私はモナカクラウドIDEでコードをテストし、二つの問題があることが判明:

    1. は、jQueryライブラリが欠落しています。あなたのiframe内に
    2. 、このエラーがあります:

    Mixed Content: The page at ' https://world-switch.com/komaki/mypage/ ' was loaded over HTTPS, but requested an insecure image ' http://worldswitch-html-upload.world-switch.com/kyoto-komaki.jp/save_image/ '. This request has been blocked; the content must be served over HTTPS.

    ソリューション:

    1. プロジェクトにjQueryライブラリを追加します。
    2. index.htmlファイルでは、httpshttpに変更してください。

    私にとってはうまく動作し、iFrameも遅延なくロードされます。お役に立てれば。がんばろう!

    関連する問題