Подтвердить что ты не робот

Получить имя iframe изнутри iframe

Хотя это было бы достаточно просто, но я не могу найти ответ. Мне нужно знать, как я могу получить доступ к имени iframe из указанного iframe. Я пытался что-то вроде этого, но он не работал.

<iframe name="thename">
  <script type="text/javascript">
    alert(parent.name);
  </script>
</iframe>
4b9b3361

Ответ 1

Ты был почти прав. Установка атрибута name в frame или iframe задает свойство name объекта global window для этой строки. (Не parent, который относится к окну документа, которому принадлежит кадр.)

Итак, если какой-то другой script намеренно изменил имя, это так же просто, как:

1.html:
<iframe name="tim" href="2.html"></iframe>

2.html:
<script type="text/javascript">
    alert(window.name); // tim
</script>

Ответ 2

Есть комбинация ответов, которые я предпочитаю:

// window.frameElement Gets IFrame element which document inside
window.frameElement.getAttribute("Name");

Он работает на IE7 +, Mozilla и Chrome

Ответ 3

в некоторых случаях window.frameElement возвращает null в iframe, поэтому я решил обходное решение для него.

1. вам нужно установить хэш в src url iframe

<iframe name="tim" href="2.html#your-hash"></iframe>

2. в iframe вы можете получить этот хэш с

<script type="text/javascript">
    var hash = window.location.hash;
</script>

Ответ 4

Ну, элемент IFRAME не должен содержать ничего, он нацеливается на другой документ. Поэтому использование тега SCRIPT внутри IFRAME не имеет большого смысла. Вместо этого используйте SCRIPT внутри вызываемого документа, например.

iframe_caller.html:

<html>
 <body>
  <iframe id="theIframe" name="theIframe" src="iframe_doc.html"></iframe>
 </body>
</html>

iframe_doc.html:

<html>
 <body>
  <script type="text/javascript">
    var iframes= parent.document.getElementsByTagName("iframe");
    document.write(iframes[0].getAttribute("id"));
  </script>
 </body>
</html>

Примечание. Я использую parent.document.function() там.

Ответ 5

Что-то вроде этого должно работать:

parent.document.getElementById('idhere').name;

Вы должны использовать родительский элемент, а затем получить элемент либо по имени, и по имени и т.д., затем получить доступ к свойству name.

Итак, ваш код должен выглядеть следующим образом:

<iframe name="thename">
 <script type="text/javascript">
   var iframeName = parent.document.getElementById('idhere').name;
 </script>
</iframe>

Ответ 6

как я могу получить несколько iframe в индексе, если я хочу получить весь класс iframe и если XYZ имеет класс ABC, тогда функция fire