2017-11-24 24 views
-2

私は本来所有するアプリケーションを実行するiframeを含むオフィスアドインを開発しています。Officeアドイン内からiframe(url)の状態を記録する

問題は、私はこれをアドイン状態に保存することができるように、iframeのURLを常に記録しておき、アドインを再オープンするたびにiframeを正しいURLにロードするようにしてください。

変更するたびにiframe内からURLを出力する方法がわかりませんか?人々がいる理由を理解

Home.html

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8" /> 
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 
    <title></title> 
    <script src="../Scripts/jquery-1.9.1.js" type="text/javascript"></script> 
    <script src="../Scripts/FabricUI/MessageBanner.js" type="text/javascript"></script> 
    <script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script> 

    <link href="Home.css" rel="stylesheet" type="text/css" /> 
    <script src="Home.js" type="text/javascript"></script> 

    <!-- For the Office UI Fabric, go to https://aka.ms/office-ui-fabric to learn more. --> 
    <link rel="stylesheet" href="https://appsforoffice.microsoft.com/fabric/2.1.0/fabric.min.css"> 
    <link rel="stylesheet" href="https://appsforoffice.microsoft.com/fabric/2.1.0/fabric.components.min.css"> 


</head> 
<body> 


</body> 
</html> 

Home.js

(function() { 
    "use strict"; 

    // The initialize function must be run each time a new page is loaded 
    Office.initialize = function (reason) { 
     $(document).ready(function() { 

      var iframew = document.createElement('iframe'); 
      iframew.src = '../SecondPage/SecondPage.html'; 
      iframew.id = 'iframe1'; 
      iframew.onload = iframeLoaded(this.contentWindow.location.href); 

      document.body.appendChild(iframew); 


     }); 
    }; 

    // Helper function for displaying notifications 

    function iframeLoaded(location) { 
     console.log("log", location); 
    } 
})(); 

答えて

0

カント:ここで私が持っているもののサンプルがあり、このdoesntのは、アプリケーションにサンプル・ページだけのカップルが含まれていますこの質問をd​​ownvoting、それは本物の問題だった

とにかく、私はこれを解決するために、iframeのロード後にaa関数をつけることでこれを解決しましたiframeのURLを出力するセットi nterval期間ここ

var iframew = document.createElement('iframe'); 
     iframew.id = 'iframe1'; 
     var baseUrl = '#YOUR BASE URL#'; 

     let openUrl = getProperty('openurl'); 
     if (!openUrl) { 
      console.log('No saved url'); 
      iframew.src = baseUrl; 

     } 
     else { 
      console.log('saved url'); 
      console.log(openUrl); 
      iframew.src = openUrl; 

     } 
     //when iframe loads attach function to save at interval 
     iframew.addEventListener('load', function() { setInterval(function() { iframeLoaded(iframew.contentWindow.location.hash, iframew.contentWindow.location.href); }, 4000); }); 
     document.body.appendChild(iframew); 

また、URLのいくつかの操作を行い、アドインのdoocument設定にURLを保存し、別の機能をcalles iframeLoaded機能である:

function iframeLoaded(hash, location) { 
      //if not in an analysis dont save 
      if (hash.indexOf('#/dataset/') !== -1) { 
       console.log("Same url") 
       return 
      } 
      //remove # from hash 
      hash = hash.substr(1); 
      //concatenate base and hash 
      let newUrl = baseUrl + hash; 
      console.log(hash) 
      console.log(newUrl); 
      //save 
      if (Office.context.document.settings) { 
       saveProperty('openurl', newUrl); 
      } 
     }