Получить имя iframe изнутри iframe
Хотя это было бы достаточно просто, но я не могу найти ответ. Мне нужно знать, как я могу получить доступ к имени iframe из указанного iframe. Я пытался что-то вроде этого, но он не работал.
<iframe name="thename">
<script type="text/javascript">
alert(parent.name);
</script>
</iframe>
Ответы
Ответ 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