我想为Rails应用创建可嵌入的小部件,允许用户从外部网站与应用互动。
我已经准备好尝试使用iframe来实现这一目标。但后来我发现了一些论坛响应似乎表明iframe不是实现这一目标的最佳方式,而是使用JS来嵌入HTML元素。这让我感到惊讶 - 我认为iframe只是因为CSS和脚本的隔离而成为明显的赢家。
那么,在第三方网站中嵌入(有限)应用功能的最佳方式是什么?此交互仅限于登录和单个简单表单。 JS的iframe嵌入了最佳方式吗?作为一个附带问题,这两种方法都有安全问题需要注意吗?
答案 0 :(得分:2)
我认为使用iframe很难吸收。这不是整个网站的感觉,它就像是另一个网站,大多数风格不匹配,或者你有一个滚动条或响应式布局不适用。所以这里有一个pro / con列表:
iframe PRO:
iframe CON:
js PRO:
$.load
覆盖链接点击次数等。)js CON:
我写了一个小的rails插件,它允许你将你的rails应用程序作为js框架嵌入另一个(它仍然真的是测试版):Sending multipart/formdata with jQuery.ajax。该插件处理大多数js问题,如链接/表单事件,并写入浏览器历史记录。
所以..如果你需要运行一个应该真正嵌入到其他网站上的商店这样的网站的应用程序,我会使用js嵌入。
如果您创建要像https://github.com/Elektron1c97/better_frame那样分享的自定义项目,则可能需要使用iframe。
答案 1 :(得分:1)
如果您希望第三方网站对与您的小部件的交互做出反应,那么您绝对应该使用javascript。虽然可以通过iframe在不同域之间传递消息,但它并不是最方便使用的。见https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
至于使用javascript,您只需要求您的用户嵌入一个可呈现您的小部件的javascript文件。要绕过任何CORS问题,您的窗口小部件应与支持JSONP响应的API进行交互。