проблема со встроенным скриптом Google Apps в iFrame - PullRequest
0 голосов
/ 31 мая 2019

У меня есть многостраничное веб-приложение.Я хочу после входа в систему, пользователь видит список своих товарищей по команде и отмечать их статус посещаемости.Моя проблема в том, что я не могу показать это в iFrame, а не в оригинальном скрипте Google!Например, я хотел добавить iFram на свою собственную веб-страницу.Два дня я не могу решить эту проблему, я прочитал много сообщений на этот счет, а также попробовал другое приложение с нуля, но пока не повезло.Ребята, не могли бы вы помочь мне в этом?

для пояснения, я перенаправляю пользователя внутрь фрейма с помощью функции рендеринга.Так как @theMaster упомянул, что это не многостраничное веб-приложение.

вот мои функции 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

1 Ответ

1 голос
/ 31 мая 2019

Попробуйте

window.top.location = link;

Он загрузит ссылку в верхнем фрейме. Если вы создаете веб-приложение на своем веб-сайте, то вам следует использовать

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]
| |           |  |
| =============  |
|                |
|                |
|                |
==================
...