Javascript 从Office加载项中记录iframe(url)的状态

Javascript 从Office加载项中记录iframe(url)的状态,javascript,jquery,html,iframe,office-addins,Javascript,Jquery,Html,Iframe,Office Addins,因此,我正在开发一个office插件,它将基本上包含一个iframe,它将运行我们自己的应用程序 问题是,我想连续记录iframe的url,以便将其保存到addin状态,这样我们就可以在每次重新打开addin时使用该信息将iframe加载到正确的url 我想不出一种方法来在每次更改时从iframe中输出url?这是我所拥有的示例,它不包含应用程序,只包含两个示例页面: Home.html <!DOCTYPE html> <html> <head> &l

因此,我正在开发一个office插件,它将基本上包含一个iframe,它将运行我们自己的应用程序

问题是,我想连续记录iframe的url,以便将其保存到addin状态,这样我们就可以在每次重新打开addin时使用该信息将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>

我不明白为什么人们对这个问题投反对票,这是一个真实的问题

无论如何,对于任何感兴趣的人,我通过在iframe加载后附加一个函数来解决这个问题,该函数以设置的间隔周期输出iframe的url

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);
以下是iframeLoaded函数,该函数还对url进行一些操作,并调用另一个函数,该函数将url保存到外接程序的doocument设置中:

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);
            }
        }
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);
            }
        }