如何在我的javascript代码中获取此框架的名称

时间:2011-01-29 02:09:39

标签: javascript jquery html frame

这是我的HTML代码:

<frameset rows="18,*" frameborder=0 framespacing=0>
    <frame src="/zh-cn/MapS/MainTop/" noresize scrolling=no>
   <frameset cols="0,*,210" name="menu">
     <frame src="/zh-cn/MapS/MainLeft/" scrolling=no noresize>
     <frame src="/zh-cn/MapS/Watch/" name="desk">
     <frame src="/zh-cn/MapS/RightMenu/" scrolling=no noresize>
    </frameset>
  </frameset>

这是框架中的javascript代码:

parent.parent.frames[2].frames[0]

我想知道这个框架是哪个名字,

我这样做:

console.log(parent.parent.frames[2].frames[0].nodename)

它显示:

undefined

所以我该怎么做,

感谢

7 个答案:

答案 0 :(得分:6)

例如,这应该有效

window.frameElement.name

此外,如果您拥有的只是对框架内元素的引用,并想知道此元素所属的框架名称:

document.getElementsByTagName("body")[0].ownerDocument.defaultView.window.frameElement.name

答案 1 :(得分:1)

问候,

您可以创建一个函数来从框架内容中检索框架元素名称,如下所示:

function getFrameName(frame) {
    var frames = parent.frames, 
        l = frames.length, 
        name = null;

    for (var x=0; x<l; x++) {
        if (frames[x] === frame) {
            name = frames[x].name;
        }
    }

    return name;
}

然后在文档中调用它:

window.onload = function() {
    var body = document.getElementsByTagName("body")[0],
        name = getFrameName(self);

    if (name != null) {
        var text = document.createTextNode("this frame name is: " + name);

        body.appendChild(text);
    }
}

希望有所帮助。

答案 2 :(得分:1)

为什么这里的所有答案都如此复杂?

当前文件的名称(==框架名称)可以通过以下方式获得:

var sName = window.name;

如果当前文档是根文档,或者如果父文档没有为子框架指定名称,则sName将为空字符串。

答案 3 :(得分:0)

这应该给你src值。

console.log(parent.parent.frames[2].frames[0].location.href)

答案 4 :(得分:0)

将您的HTML更改为:


<html>
<frameset  rows="18,*">
    <frame name="MainTop" src="/zh-cn/MapS/MainTop/" scrolling="auto" frameborder="0">
    <frameset  cols="0,*,210">
        <frame name="MainLeft" src="/zh-cn/MapS/MainLeft/" scrolling="auto" frameborder="0">
        <frame name="Watch" src="/zh-cn/MapS/Watch/" scrolling="auto" frameborder="0">
        <frame name="RightMenu" src="/zh-cn/MapS/RightMenu/" scrolling="auto" frameborder="0">
    </frameset>
</frameset>
</html>

测试脚本:


console.log(parent.frames[2].name);

答案 5 :(得分:0)

为什么那么麻烦? 只是

Console.Write("Your card is a{0} " & textValue & " of " & suit, IIf(textValue = "Ace", "n", "")) Dim string2 As String = (suitIcon & " " & textValue) Dim padAmount As Integer = (25 - (suit.Length + textValue.Length)) + suitIcon.Length + textValue.Length If textValue = "Ace" Then padAmount -= 1 End If Console.Write(string2.PadLeft(padAmount, " "c)) Console.WriteLine()

为您提供当前帧名称。

答案 6 :(得分:0)

当前页面:

location.pathname

当前页面的地址:

<强> location.href

页面内的第一帧:

<强> parent.frames[0].name

请注意:

window.document.location