0

我需要一个自定义小部件到我的应用程序网站的用户中,最初认为 iframe 会使其变得如此简单,原因如下:

  1. 我可以使用为应用程序构建的自定义框架,它提供了大量预构建的代码和功能,我将在小部件中使用这些代码和功能,因此不必重新创建。跨浏览器事件处理程序和原型对象只是众多示例中的一小部分。
  2. 我不必担心与 CSS 发生冲突,更具体地说,不必为我创建的每个 dom 元素使用内联 css。
  3. 跨域请求不是问题,因为我已经为需要使用 jsonp 进行通信的所有内容构建了功能,所以不要让它成为嵌入式 dom 小部件的缺点。

目前的想法是编写一个快速的 javascript 片段,它本质上是一个按钮,并在全屏窗口上方加载一个透明的 iframe。这将使我能够控制整个视图,并允许我像编写父应用程序的任何其他部分一样编写小部件。保持相同的 json 通信,使用相同的样式,使用框架等。单击 iframe 中不属于小部件的任何部分(可能会在屏幕中间加载,如果打开,则为全屏移动设备)将关闭小部件并使用户恢复到他们在网站内的正常导航。但是,他们可以在我的小部件启动时与它进行交互,就像它是网站的嵌入部分,恰好加载了一个 javascript 弹出窗口。

小部件本身与服务器进行了大量的通信。加载时有一些请求,然后当用户交互时,它通常会发送一个请求,更改视图,然后等待另一个响应。

说了这么多,这是一个坏主意,还是不专业的主意?我是否应该将额外的工作直接嵌入到主机 DOM 中并重写所有方便的框架代码?我这样做没有问题,但如果 iframe 是一个更合适的选择,那么我想我宁愿这样做。我唯一的限制是我需要支持到 IE8,当然,小部件需要在桌面和移动设备上都可以查看,并且小部件不能对客户网站造成干扰。

4

1 回答 1

0

来自另一篇文章的一些好读物。尽管已关闭,但它提出了一些支持 iframe 的体面的论据。

为什么开发人员讨厌 iframe?

引起共鸣的几点:

  1. Gmail、live.com、Facebook 互联网上的任何其他主要网站都利用 iframe 并在正确使用它们的情况下......这就是它们的目的。
  2. 在特别像我这样的情况下,它被认为是一种更好的做法,可以防止与我无法控制的远程网站出现任何可能的兼容性问题。我宁愿使用 iframe,还是销毁个人网站?当然,我可以采取所有可能的预防措施,并且实际上在另一个人的网站上引起问题的可能性很小,但是使用 iframe 是不可能的。因此,为什么它们首先被创建。
  3. 在我的情况下,搜索引擎优化并不重要。我只是将 javascript 应用程序扩展到远程用户网站,而不是提供可搜索的内容。

基于以上原因,我认为采用更简单的方法实际上是更专业的选择。iframe 通常有一点误解,我认为是因为它们过去以丑陋的方式过度使用,但是表格也有同样的误解,不管你信不信,当数据最好以表格方式显示时,它使感觉使用...等待它...表。尽管我们在诸如 display: table-cell 之类的 css 值后面执行此操作。

现在 iframe 得到我的投票。如果在这个项目的开发道路上再往前走一点,我会更新这个答案,我会改变主意。

于 2012-09-26T03:52:22.437 回答