как получить имя этого кадра в моем коде JavaScript - PullRequest
1 голос
/ 29 января 2011

это мой 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 ]

6 голосов
/ 16 августа 2016

Например, это должно работать

window.frameElement.name

Кроме того, если все, что у вас есть, это ссылка на элемент внутри фрейма и вы хотите знать имя фрейма, которому принадлежит этот элемент:

document.getElementsByTagName("body")[0].ownerDocument.defaultView.window.frameElement.name
1 голос
/ 30 ноября 2015

Почему все ответы здесь так сложны?

Название текущего документа (== имя фрейма) можно получить через:

var sName = window.name;

Если текущий документ являетсякорневой документ или если родительский документ не назначил имя дочернему фрейму, sName будет пустой строкой.

1 голос
/ 29 января 2011

Привет,

Вы можете создать функцию для извлечения имени элемента фрейма из содержимого фрейма следующим образом:

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);
    }
}

Надеюсь, это поможет.

0 голосов
/ 18 января 2016

Текущая страница:

location.pathname

Адрес текущей страницы:

location.href

Первый кадр внутри страницы:

parent.frames[0].name

обратите внимание, что:

window.document.location
0 голосов
/ 01 октября 2015

Почему все эти проблемы?Просто

frames.name

дает вам имя текущего кадра.

0 голосов
/ 29 января 2011

Измените ваш 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);
0 голосов
/ 29 января 2011

Это должно дать вам значение src.

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