【问题标题】:Is it possible to hide/close an iframe from within itself or on server side?是否可以从内部或服务器端隐藏/关闭 iframe?
【发布时间】:2010-09-22 10:38:19
【问题描述】:

假设我有一个页面,我正在为域 first.com 编写一个 javascript 插件。 javascript插件将指向登录页面(域second.com)的iframe注入first.com页面并将其显示为弹出窗口,以便用户可以登录。

在用户使用 iframe 登录后,我是否可以隐藏/关闭 iframe?我可以将任何必要的 javascript 注入到first.com 页面中,并且我可以控制 iframe 中登录页面上的客户端和服务器端代码。

主要问题是 iframe 无法访问其父窗口以隐藏自身,并且由于相同的源策略,父窗口无法看到 iframe 内容中所做的任何更改。无论如何,还是应该放弃 iframe 的想法,而是打开一个新窗口?

【问题讨论】:

    标签: javascript iframe cross-domain


    【解决方案1】:

    我认为您遇到的问题是浏览器阻止了跨域通信的发生。 sign your javascript 有一种方法,但它几乎破坏了浏览器安全模型,除非绝对必要,否则不建议使用。

    登录表单是否基于 URL 提交?您可以创建一个简单的登录表单并使用 AJAX 来获取您的响应以确保成功登录。此解决方案依赖于 RESTful 登录,我不确定您的 second.com 的实施情况。

    如果您想知道如何使用 ajax 提交表单,我会检查 this (它在 jQuery 中,但它几乎适用于任何框架。)查看源代码,看看是否这可能适用于您的情况。

    【讨论】:

      【解决方案2】:

      如果可以说服 second.com 的开发人员在其登录页面中加载 iframe,该页面加载 first.com 的页面,则内部 iframe 可以在外部调用 javascript,因为它们都来自 first.com .您也可以通过内部 iframe 的 url 以这种方式传递参数。 example 在这里。

      【讨论】:

      • +1 据我了解,他控制“second.com”,因为那是登录页面,所以您的解决方案应该可以工作..
      猜你喜欢
      • 1970-01-01
      • 2014-04-04
      • 2020-10-03
      • 2019-11-08
      • 1970-01-01
      • 2014-01-20
      • 2013-09-19
      • 1970-01-01
      相关资源
      最近更新 更多