Чтобы немного поиграть с иерархией кадров, я написал небольшую html-страницу, которая позволяет вложить произвольное количество кадров (код доступен в конце вопроса).
Однако это не сработает, на IE9 и Firefox 4 внутренние кадры создаются, но не отображаются (head
и body
пусты):
а в Chrome он работает на двух уровнях, а затем, если я нажимаю кнопку Add
на внутреннем фрейме, ничего не происходит (в консоли тоже не появляется сообщение об ошибке).
Если я скопирую файл N
раз и каждый файл использует другой файл, он работает на любую глубину (но не там, где есть цикл).
Я попытался найти такое ограничение, но я не должен был использовать правильные ключевые слова. У кого-нибудь есть ссылка на это?
Здесь файл addRemoveFrames.html:
<!DOCTYPE html>
<html>
<head>
<title>Add and Remove Frames</title>
<script type="text/javascript">
function add() {
var f = document.createElement('iframe');
f.src = 'addRemoveFrames.html';
document.getElementById('frameContainer').appendChild(f);
}
function remove() {
var c = document.getElementById('frameContainer');
var f = c.lastChild;
if (f)
c.removeChild(f);
}
</script>
</head>
<body>
<input type="button" onclick="add()" value="Add"/>
<input type="button" onclick="remove()" value="Remove"/>
<hr />
<div id="frameContainer"></div>
</body>
</html>
Я немного изменил @davin, поэтому каждый URL-адрес кадра отражает его полный путь в иерархии.
var counter = 0;
function add() {
var f = document.createElement('iframe');
var sep = location.search ? (location.search + '.') : "?";
f.src = 'addRemoveFrames.html' + sep + ++counter;
document.getElementById('frameContainer').appendChild(f);
}