2013-01-15 101 views
0

这个问题非常值得总结。我正在尝试做类似于Gmail的操作,如果您在文本字段中输入内容,网站会提示您确认是否要离开该页面。如何检查iframe中的文本框是否为空?

但是,如果问题中的文本字段在iframe中怎么办?很明显,我可以分配iframe一个id,但是有没有任何javascript命令或者可以检查iframe中的字段是否为空的东西?这甚至有可能吗?

编辑:嵌入iframe的iframe源和页来自同一个域。

+0

请评论,如果页面和iframe在同一域中或不是。附注:不需要在问题中签名... –

+0

我的签名不好。是的,iframe和页面位于同一个域中。 – Charles

回答

2
var value = document.getElementById('iframeID').contentDocument 
        .getElementById('theTextBoxId').value; 

是的,这是可能的,你只需要获得访问文档与contentDocument

从DOM iframe元素中,脚本可以通过contentWindow属性访问包含的HTML页面的窗口对象。 contentDocument属性引用iframe中的文档元素(这相当于contentWindow.document),但IE8之前的Internet Explorer版本不支持。

尝试访问框架内容的脚本受到同源策略的约束,如果从其他域加载,则无法访问其他窗口对象中的大多数属性。

MDN

+0

+1。请注意,此类代码仅适用于IFrame的页面和内容来自同一个域时。 –

+0

@AlexeiLevenkov,谢谢,我将它添加到下一个访问者的答案中,尽管OP写道,对于他的具体情况他没有这个问题。 – gdoron

+0

谢谢,这是问题的最佳答案。我认为Kolink的提案更适合我的情况。我以前没有想过要这样做。 – Charles

1

只需设置onbeforeunload,你会仿佛iframe'd页面是顶级页面。如果尝试在父框架或子框架中离开,它将被确认中断。

1

使用jQuery你可以访问iframe中的内容:

$("#iFrame").contents().find("#text")