我有一个多页Web应用程序。我要登录后,用户看到其队友列表并标记出勤状态。我的问题是,我无法在iFrame中而不是在Google脚本原始版本中显示它!例如,我想将其框架到我自己的网页。这是两天的时间,我无法克服这个问题,在这方面我读了很多文章,并且从头开始尝试了另一个应用程序,但是还没有运气。你们能帮我吗?
为澄清起见,我正在使用渲染功能将用户重定向到框架内。因此,就像@theMaster提到的那样,它不是多页Web应用程序。
这是我的doGet和Render函数:
function doGet(e){
// Logger.log(e);
Route.path("login",loadLogin);
Route.path("admin",loadAdmin);
Route.path("view",loadView);
Route.path("form",loadForm);
if (e.parameters.id){
LastID=e.parameters.id[0];
}
if (e.parameters.t){
curT=e.parameters.t[0];
}
if (Route[e.parameters.v]) {
return Route[e.parameters.v]();
} else {
return render('W-home');
}
}
function render(file, argObject){
var page = HtmlService.createTemplateFromFile(file);
if (argObject){
var keys = Object.keys(argObject);
keys.forEach(function (k){
page[k]=argObject[k];
});
}
var evalPage =page.evaluate();
// if (!xFrame){return evalPage;};
return evalPage.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}
我可以从主页转到登录页面,但是在那之后,即使它也不允许我访问Google!
在某些情况下,也会在框架内返回空白页!
这是我的客户端Java脚本示例代码。
function goToForm(EmpNo){
var link = "<?!=ScriptApp.getService().getUrl()?>"+"?v=form&id="+EmpNo[1]+"&t="+EmpNo[2];
location.href=link;
// I tried different way to see if i can conqure this!
// if (clickBTN= 'a') {
// window.open(link, "_self");
// } if (clickBTN= 'b') {
// location.href=link;
// } if (clickBTN= 'c') {
// openNewURLInTheSameWindow(link);
// }
}
我还具有两个全局变量xFrame
,将XframeOptionsMode设置为allowAll或不设置,base
将HTM页面上的基本目标设置为“ _top”或“ _self”。
请告知, M
答案 0 :(得分:1)
尝试
window.top.location = link;
它将链接加载到顶部框架中。如果您要在网站中构建Web应用程序本身,则应使用
window.parent.location = link;
因为网络应用本身已加载到iframe中。
==================
|Your site |<-mysite.com [TOP]
| |
| ============= |
| |GASWebApp |<-|--script.google.com[Frame#1]
| | | |
| |========= | |
| ||SandBox| | |
| ||User |<-|--|-- Where your html code is
| ||Frame | | | (*.googleusercontent.com)
| |========= | | [Frame#2]
| | | |
| ============= |
| |
| |
| |
==================