2010-03-17 43 views
0

我有一些iframe在我的主页中调用一个函数。有没有办法找到调用函数的iframe的ID?查找调用iframe ID

有相同的域的所有部分,所以不应该是一个问题。

谢谢你的时间。

回答

0

最常见的方式是有控制的通过本身的功能

<script>function doClick(e){ alert('id = ' + e.id); }</script> 
<span id=test onclick="doClick(this)"> click here</span> 

另一种方式是通过使用:

event.srcElement 

如记录here

第三种方式,但没有可靠的是通过使用:

document.activeElement.name 

后者是不是最好的方法。

以我个人的观点来看,我会选择第一个,因为它可以100%的工作,并且不会给你浏览器问题。

UPDATE 为了得到当前iframe的ID(假设你没有在同一页上在嵌套的iframe),您可以简单地使用:

this.document.getElementsByTagName('body')[0]​.id 

,然后简单地通过它与呼叫一起到你的功能。例如,确保身体与您的iframe具有相同的ID。

让我知道它是否对你有帮助。

+0

但是,如何才能知道iframe的ID。这些ID是随机生成的。 – 2010-03-17 09:04:56

+0

只需传递函数即可。你可以使用像这样的东西:parent.frames [0] .id – 2010-03-17 09:11:14

+0

由于不同的iframe会有不同的ID,它不会总是parent.frames [0] .id。它可能是parent.frames [1] .id等 – 2010-03-17 09:15:30

0

我想说你需要发送一个标识符以及你的方法调用。它可以是一个可选的参数,它没有任何伤害,如果不存在,如:

function foo(value, refId) { 
    // do stuff with value 
    if (typeof refId!=='undefined') { 
    // handle this 
    } 
} 
+0

不幸的是我无法做到这一点。 – 2010-03-17 09:03:44

+0

怎么回事? refId可以是任何东西(不必完全是您的iframe的DOM ID),只要您可以使用它来以某种方式解析调用方。但是现在听起来你无法控制来自帧的呼叫吗? – npup 2010-03-17 09:08:09

+0

我可以控制iframe内容,但不支持iframe ID或iframe位置 – 2010-03-17 09:16:01