【发布时间】:2011-09-27 01:41:26
【问题描述】:
我正在开发各种第三方小部件(HTML5/js 视频播放器),旨在无缝嵌入第三方网站,与 Flash 播放器(HTML5 /js 播放器在这种情况下是一个后备)。
为了允许通过单个网关进行外部嵌入,我们提供的嵌入代码大致如下所示:
<script src="http://example.com/embed.php?id=12345678&width=400&height=300"></script>
注意 .php 扩展名。该脚本的作用是执行一些基本的浏览器代理检测,主要基于“id”查询字符串运行一些后端逻辑,然后将 document.write 的 javascript 回显到实际嵌入代码的页面。
如果它是支持 Flash 的设备,则 document.write 代码是直接的 <object> Flash 嵌入代码(无 iframe;直接到他们的页面);如果它是 iOS 设备,它会写入 <iframe>,其 src 指向一个 HTML 文档,该文档 是 HTML5/javascript 播放器 -- 在 <head> 中有自己的 .js,一组<div>s 在构成 HTML5/js 播放器等的正文中。
我确信这可以清理/做得更好。所以,我的问题:
可以或应该删除哪些步骤(如果有)?
最好先将 HTML5/js 版本放入 iframe,而不是直接将其全部写入页面?我们在
<head>中使用的外部.js 呢?此外,在未来,我们可能需要与我们的网站(与 iframe src 相同的域)进行一些双向通信,因此 iframe 提供了一种很好的方式来实现这一点,对吗?如果在 iframe 中加载,我是否需要担心任何范围问题(例如,我们播放器的 jQuery 版本与第三方父页面上的内容冲突)?
我可以/应该做些什么来确保正确的加载顺序,这样我就不会在我们的脚本加载/执行时对第三方网站产生负面影响?
有没有比使用 document.write 将最终嵌入代码写入第三方页面(无论是 Flash 的
<object>代码还是 HTML5/js 的<iframe>)更好/更智能的选择?我应该将此代码写入原始 js 行中包含的 div,还是仅将其 document.write 写入它恰好位于的任何容器中是否安全?
谢谢! Javascript 的范围问题和异步行为从来都不是我的强项……
【问题讨论】:
标签: javascript html iframe embed