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