最近我维护的 At.js 项目上有人反映说其不能直接在 iframe 中工作,需要 hack (将整个插件载入 iframe). 但是很多所见即所得编辑器都是使用 iframe 的,比如 ckeditor. 如果能默认支持最好了。
一般想到的方法就是让用户传入 iframe
对象即可,然后所有工作基于 iframe.contentDocument
工作就好了.
但是我不想在 At.js
里加多这么一个参数,于是我找到了一比较好的解决方法 (兼容 IE):
通过 iframe 中的元素获得 iframe 的父级元素的 document 对象
如此一来就不用改变任何接口即可兼容 iframe 的情况。方法很简单,直接上代码:
inputor = iframeX.contentDocument.getElementById('inputor')
oDocument = inputor.ownerDocument
// parentWindow - IE
oWindow = oDocument.defaultView || oDocument.parentWindow
/**
这个方法也挺有意思的, 可以反过来获得该 iframe.
At.js 需要获得 iframe 的 offset
**/
oFrame = oWindow.frameElement
PS. 我总觉得在 ruby 社区发些前端的东西挺别扭的。不知各位有啥意见没。 另外,这个是之前想分享但没有发的遗留下来的 (论坛保存了 draft....). 所以现在就简短的写写好了。我准备发另一个主题的东西