【问题标题】:How to maximize a iframe portlet in Liferay portal?如何在 Liferay 门户中最大化 iframe portlet?
【发布时间】:2015-07-16 09:24:21
【问题描述】:

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

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

  • 我希望 iFrame portlet 自动最大化和/或导航 到另一个页面。
  • 我不想在 Liferay 门户中添加页面,然后给 URL,而不是当我单击 portlet 时,应用程序必须出现 在新页面或最大化模式中。

我如何实现这一目标?

【问题讨论】:

  • 请显示您到目前为止尝试过的代码
  • 没有代码。拖动 iframe portlet 并在配置中添加并保存应用程序的 URL。而已。但是 portlet 仅限于给定空间,我希望它显示为整页。
  • 你没有试过给 iframe 指定高度和宽度吗?
  • 我有,但它仍然在一个狭窄的空间里。我正在寻找的是,当我单击 portlet 时,它应该会自动最大化。
  • 那么,登录按钮实际上在哪里?您可能需要添加 jQuery 魔术来增加 iframe 的大小或导航到其他页面。

标签: iframe liferay portlet maximize


【解决方案1】:

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

在 liferay 中创建 2 个页面,例如 /home/login,两者都将 iframe portlet 配置为不同的 URL。

  1. /home:这将显示您的初始 iframe-portlet,然后单击应用程序中的登录按钮,您可以提供 /login 页面的 URL,该页面将具有一个应用程序布局,并且 iframe 将填充整个页面。
  2. /login:该页面的 URL 会在您点击登录后出现在您的应用中的页面的 iframe 中配置。

您可以在您的应用程序中的 iframe 中为单击登录后出现的第二个页面添加一个 onLoad 脚本,该脚本将在 iframe 中加载第二个页面时最大化您的 iFrame。

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

但是要使第二种和第三种方法起作用,您需要 Liferay 和 iFrame 中的应用程序共享相同的 FQDN,否则由于跨域脚本安全性,您的脚本将无法运行。

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


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

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

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

希望这会有所帮助。

【讨论】:

  • 嗨。我无法控制应用程序.. 将应用程序/网站视为第三方工具,如 facebook 或 youtube,当我单击登录/或任何按钮时,portlet 必须调整为整页
  • 已经编辑了我的答案,但或多或​​少是不可能的,因为它需要对子应用程序进行一些控制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 2023-03-31
  • 2013-11-01
  • 2012-08-12
相关资源
最近更新 更多