получить доступ к имени iframe изнутри iframe - PullRequest
26 голосов
/ 12 февраля 2010

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

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

Ответы [ 5 ]

51 голосов
/ 14 сентября 2012

Я предпочитаю комбинацию ответов:

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

Работает на IE7 +, Mozilla & Chrome

51 голосов
/ 12 февраля 2010

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

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

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

2.html:
<script type="text/javascript">
    alert(window.name); // tim
</script>
4 голосов
/ 09 сентября 2017

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

1. Вам нужно установить хеш в URL-адресе iframe

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

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

<script type="text/javascript">
    var hash = window.location.hash;
</script>
1 голос
/ 12 февраля 2010

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

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() там.

0 голосов
/ 12 февраля 2010

Примерно так должно работать:

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

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

Ваш код должен выглядеть так:

<iframe name="thename">
 <script type="text/javascript">
   var iframeName = parent.document.getElementById('idhere').name;
 </script>
</iframe>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...