如何在Liferay门户中最大化iframe portlet?

时间:2015-05-06 09:57:39

标签: iframe liferay portlet maximize

我添加了一个iframe portlet,并将应用程序的URL提供给了Liferay门户网站。

当我点击登录按钮/或应用程序时:

  • 我希望 iFrame portlet 能够自动最大化和/或导航 到另一页。
  • 我不想在Liferay门户网站中添加页面然后给出 URL,相反,当我单击该portlet时,必须显示该应用程序 在新页面或最大化模式中。

我如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

如果您对iframe内的应用程序拥有控制权(代码控制权)并且它们来自同一个FQDN,则可以执行此操作。

在liferay中创建2页,例如/home& /login,两者都可以使用不同的URL配置iframe portlet。

  1. /home:这会显示您的初始iframe-portlet,点击您应用中的登录按钮,您可以为/login页面提供具有单应用布局和iframe的网址填写整页。
  2. /login:点击登录后,此页面将在您的应用中显示的网页的iframe中配置网址。
  3. OR

    您可以在iframe中为第二页显示点击登录后显示的onLoad脚本,当第二页加载到iframe中时,此脚本会最大化您的iFrame。

    OR

    您可以使用钩子在iframe portlet中添加脚本,以根据内容中的内容动态增加iFrame的高度和宽度。

    但对于第二个&第三种方法,你需要Liferay和iFrame中的应用程序共享相同的FQDN,否则你的脚本由于跨域脚本安全性而无法工作。

    对于方法的第二个和第三个,这里有一些解决方案:

    如果您无法控制子应用并具有不同的FQDN,该怎么办?

    如果您无法控制iFrame中的子应用程序,那么我的朋友您在运气不好,因为iFrame无法访问子页面(由于安全原因),也没有子页面对父母一无所知。

    这是另一个解释很多的链接,并提供了一些基于的解决方案,允许跨域消息传递:

    希望这有帮助。