我需要一个自定义小部件到我的应用程序网站的用户中,最初认为 iframe 会使其变得如此简单,原因如下:
- 我可以使用为应用程序构建的自定义框架,它提供了大量预构建的代码和功能,我将在小部件中使用这些代码和功能,因此不必重新创建。跨浏览器事件处理程序和原型对象只是众多示例中的一小部分。
- 我不必担心与 CSS 发生冲突,更具体地说,不必为我创建的每个 dom 元素使用内联 css。
- 跨域请求不是问题,因为我已经为需要使用 jsonp 进行通信的所有内容构建了功能,所以不要让它成为嵌入式 dom 小部件的缺点。
目前的想法是编写一个快速的 javascript 片段,它本质上是一个按钮,并在全屏窗口上方加载一个透明的 iframe。这将使我能够控制整个视图,并允许我像编写父应用程序的任何其他部分一样编写小部件。保持相同的 json 通信,使用相同的样式,使用框架等。单击 iframe 中不属于小部件的任何部分(可能会在屏幕中间加载,如果打开,则为全屏移动设备)将关闭小部件并使用户恢复到他们在网站内的正常导航。但是,他们可以在我的小部件启动时与它进行交互,就像它是网站的嵌入部分,恰好加载了一个 javascript 弹出窗口。
小部件本身与服务器进行了大量的通信。加载时有一些请求,然后当用户交互时,它通常会发送一个请求,更改视图,然后等待另一个响应。
说了这么多,这是一个坏主意,还是不专业的主意?我是否应该将额外的工作直接嵌入到主机 DOM 中并重写所有方便的框架代码?我这样做没有问题,但如果 iframe 是一个更合适的选择,那么我想我宁愿这样做。我唯一的限制是我需要支持到 IE8,当然,小部件需要在桌面和移动设备上都可以查看,并且小部件不能对客户网站造成干扰。