【发布时间】:2011-08-07 14:29:50
【问题描述】:
我找到了technique that documents cross-domain communication with iframes,我决定尝试利用它来实现让 iframe 在内容更改时自动调整大小的崇高目标。
基本上,这是我的计划(我知道这有点老套)。
我可以控制父页面和子页面,但它们将被加载到不同的域(事实上,一个是 http,另一个是 https)。
在 iframe 中,我有一个函数,该函数将在文档加载时运行,然后定期运行,以获取文档的高度,并将其设置为 URL 片段的值(即,类似于https://blahblah.com/#h-768)
在父窗口中,我有一个函数会定期检查 iframe 的 URL,抓取哈希标签,解析高度,并相应地更改 iframe 的高度。
最大的问题是:iframe 没有与之关联的 ID 或名称,我可能无法更改。
实际上,iframe 最初将位于同一个域中。它将使用 document.write 在父窗口中创建 iframe-polling 函数(因为我之前说我可以控制父页面时实际上是在撒谎),然后它会导航到我实际上所在的页面有兴趣。
所以,真正的问题是,iframe 如何给自己命名或 ID?
我一直在尝试这样的事情(使用 jQuery):
$(document).ready(function() {
// Try changing the name
$(self).attr("name", "myframe");
$(self).attr("id", "myframe");
});
问题是,它似乎不起作用。
有什么想法吗?
澄清
父页面类似于http://mysite.com,而iframe最初为http://mysite.com/iframe。
初始 iframe 页面只是一个虚拟页面,即:
- 为父页面上的
- 在执行调整大小轮询的父页面上创建一个新的
-
window.location = "http://my-real-app-location.com"
新页面将使用当前高度更新 URL 片段,使 iframe 的 URL 类似于 http://my-real-app-location.com/#h-800(意味着文档高 800 像素)。
在父页面上创建的虚拟页面的脚本需要抓取该 URL 片段并相应地更改 iframe 高度。
【问题讨论】:
-
你打算在父窗口上运行这个 JS 吗?还是在实际的 iframe 中?
-
那个JavaScript是在父页面的范围内运行的吧?
-
嗯,目标是在 iframe 中运行 JavaScript 的 sn-p,以便在父页面上我可以动态创建一个引用的函数(使用 parent.document.write 或类似的东西) window.frames["myframe"]
标签: javascript jquery iframe