【问题标题】:iFrame in Chrome Extension loads everytime the extension is clicked每次点击扩展时,Chrome 扩展中的 iFrame 都会加载
【发布时间】:2013-11-28 18:57:20
【问题描述】:

我的扩展程序中有一个 iframe。 iFrame 帮助用户登录帐户。 一旦用户登录并在关闭后再次单击扩展程序。 iframe 再次加载,用户退出。

目前 iframe 直接嵌入在 html 中。我也尝试使用 JS 附加它,但即使这样也没有帮助。

编辑: 我的清单:

"permissions": ["tabs", "http://*/*", "https://*/*","activeTab"],
  "content_scripts":[
    {
        "matches":["http://*/*", "https://*/*"],
        "js":["data/js/popup.js","data/js/jquery-1.10.2.min.js"]
    }
  ],

popup.html:

    <div class="frame">
        <iframe id="Receiver" width="100%" height="250px" frameborder="0" src="http://abc.url/login"></iframe>
    </div>

链接(iframe)有登录页面,让用户登录到他的帐户。我无法直接访问该登录页面,但如果需要,请告诉我。

问题: 1)点击扩展需要很长时间才能显示 popup.html:当搜索了很多时,我知道在 iframe 完全加载之前,扩展不会弹出面板。
2)当用户登录他的帐户,并通过单击浏览器上的其他位置访问另一个页面或关闭扩展程序时。然后再次点击扩展,扩展再次加载框架/花费大量时间显示html页面,并且用户退出。

我想要类似 GroupDocs Viewer 扩展程序,一旦用户登录,在他按下“注销”之前,他不会退出。

【问题讨论】:

  • 又是什么问题?
  • @ExpertSystem :每次点击扩展时都会加载 iframe,因此用户会被注销。
  • 你真的需要提供更多细节。例如。 “负载”是什么意思?它在哪里加载?什么是“点击”? iframe 做什么(即它如何“帮助用户登录帐户”)?这句话是什么意思:“一旦用户登录并在关闭后再次单击扩展程序。” ?您的扩展结构是什么(背景页面?内容脚本?弹出窗口?其他视图?)?您的清单是什么样的?
  • @ExpertSystem :我正在再次编辑代码。对于出现的问题,我深表歉意,因为这是我第一次问,所以不知道我应该发布什么。跨度>
  • 真的很抱歉,但我还是不太明白这是怎么回事。 popup.js 做了什么(以及为什么将它注入任何网页)?用户是自动登录的(还是他必须输入一些东西(例如用户名/密码)?popup.html 或只是 iframe 上还有其他内容吗?如果只有 iframe 那么为什么还要显示弹出窗口? (也许退后一步并详细解释您要实现的目标可能是一个更好的主意(例如,“我想构建一个扩展,当用户......然后......等时)。)

标签: google-chrome google-chrome-extension


【解决方案1】:

如果我正确理解问题,加载http://abc.url/login 会在用户已经登录的情况下将其注销。因此,每次打开弹出窗口时,都会加载 iframe,并且用户会被有效注销。

可能的解决方案:

  1. 尝试检测用户是否已经登录,然后才将 iframe 添加到 DOM(通过 JS)。例如。如果有一个页面只能由登录用户(比如http://abc.url/account)访问,请尝试访问该页面并查看是否出现错误。 (具体的设置取决于服务器处理未授权请求的方式。)

  2. 默认情况下不加载 iframe,但有一个链接或按钮,用户必须单击才能调出登录 iframe。

【讨论】:

  • 好的。第二个解决方案是不可能的..但我会尝试第一个。 :) 谢谢
  • @IgnatiuzVinayak:如果您认为此答案有用并解决了您的问题,请mark it as "accepted",以便将来遇到类似问题的用户能够发现它很容易。
  • 没有一个解决方案能解决我的问题。我仍然面临同样的问题。
  • @IgnatiuzVinayak:发布您尝试过的内容(以及失败的原因)可能有助于提出实际解决问题的解决方案。顺便说一句,您是否具有对 http://abc.url 的管理访问权限,或者它是一个外部 URL 吗?
  • @IgnatiuzVinayak:我明白了。无论如何,如果我不提供更多信息,我将无能为力。例如。分享你的代码(并解释你尝试了什么以及它是如何失败的)或至少分享actusl URL是什么。
猜你喜欢
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 2013-10-12
相关资源
最近更新 更多