问题标签 [porthole.js]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
356 浏览

javascript - 在 iframed 内容中发出跨域 ajax 请求是否可行?

我在一个域上有一个应用程序,它需要从另一个域的应用程序中获取数据。

我想使用基于 iframe 的跨域 ajax 工具(例如 porthole.js)来实现以下功能:

  1. 我的应用程序在 iframe 中的另一台服务器上加载页面。

  2. 使用 porthole 将消息发送到 iframe。

  3. 另一台服务器上的页面检查以确保调用 url 有效,并读取它将从消息中发出的 ajax 请求的 url。

  4. 然后远程页面使用传递的 url 发出 ajax 请求。

  5. 结果将传递回我的应用程序。

这个解决方案让我可以使用远程 json 数据,而无需系统地更改由另一个团队构建和管理的所有服务。如果它不起作用,我会与他们一起使用使用 porthole.js 或 jsonp 进行跨域脚本编写的系统。

不过,与我有关的一点是第 4 步。这是否算作来自 iframe 内的远程文档的 ajax 调用,它能够对其进行 ajax 调用,还是算作来自外部窗口的调用,哪个不能使用ajax来调用那个域?

0 投票
2 回答
642 浏览

javascript - 使用 Javascript 且不使用 HTML 5 将消息从页面传递到父框架

我有以下场景,其中我有一个页面说“parentPage.html”,其中包含一个 iFrame 说“parentFrame”,它托管页面“childFrame.html”。“childFrame.html”包含另一个名为“childFrame”的框架,并将页面称为“sample.html”。现在,我想从“sample.html”发送一条消息并在“parentPage.html”或“c​​hildFrame.html”接收它。

我试过使用Porthole库。但是,它并不能帮助我解决这种特殊情况。另外,请注意,上述页面不必在同一个域中。

如果您能告诉我如何解决这个特定问题,那就太好了。

提前致谢。

0 投票
2 回答
2286 浏览

javascript - 跨域弹出窗口

我的流程如下:用户在站点 1 上单击登录。从站点 2 打开一个弹出窗口,要求他使用 twitter 登录。然后他登录 - 使用 oAuth,因此页面发生了变化。成功登录后,弹出窗口应关闭,站点 1 上的代码应收到通知。

什么不起作用:

  • WebIntents - 好吧,他们网站上的示例甚至都不起作用,所以我没有在本地尝试..
  • easyXDM - 与 iframe 通信,而不是弹出窗口。
  • 舷窗- 相同,使用 iframe。

一个可怕的解决方案是每隔几秒钟刷新一次 iframe,以检查用户是否已经登录。

有一个更好的方法吗?更好的图书馆?

0 投票
1 回答
1826 浏览

javascript - 实现 Porthole.js 以根据内容高度调整 iframe 大小的正确方法是什么?

我正在尝试使用 Porthole.js(http://ternarylabs.github.io/porthole/)将 iframe 内容的高度传递给其父级(因此父级可以调整 iframe 的大小以“适应”内容).. .但我无法让它工作。

家长(在 abc.com 上):

iframe(在 xyz.com 上):

我不确定如何更好地测试以查看数据是否从 iframe 推送到父级。警报触发,但父警报没有给我传递数据的值。

基本上,我想接收 iframe 的内容大小(messageEvent.data['newHeight']),为其添加 60px,并相应地设置 iframe 的高度。我哪里错了?丁:

0 投票
2 回答
188 浏览

javascript - porthole.js - 如何关闭我使用 window.open() 打开的选项卡,但从新选项卡

我需要使用window.open('...', '_blank');

然后,当用户单击按钮(按钮位于新选项卡中)时,我需要该选项卡自行关闭。

我可以控制这两个应用程序的代码库和服务器。

我尝试了以下方法:

在应用程序#1 中:

在应用程序#2 中:

不幸的是,我得到了安全异常:错误:阻止了具有源“ http://localhost:5007 ”的框架访问跨域框架。

我怎样才能绕过这个错误?无论如何我可以使用这个库来克服这个问题吗?https://github.com/ternarylabs/porthole

0 投票
2 回答
656 浏览

javascript - 如何避免 typescript-reactjs 中的 if 语句?

我有不同类型的动作检查,它们执行不同的功能,只是我做了 if 和 else 条件来检查动作类型并执行相关功能,如下面的代码片段

有没有更好的解决方案来处理这种情况,因为我有可能在未来有更多的操作,我必须一次又一次地更改代码,我觉得这是低效的。

onMessage函数之间用作porthole库的事件侦听器(Porthole 是一个用于安全跨域 iFrame 通信的小型库。)我曾经在我的 react 应用程序的 iframe 中进行通信

提前致谢