Чтобы немного поэкспериментировать с иерархией фреймов, я написал небольшую 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);
}