Я знаю, что наборы фреймов не совсем передовая технология, но мне пришлось отлаживать старое приложение, и я столкнулся с неожиданным поведением.
Вот несколько простых HTML-страниц, демонстрирующих такое поведение.
index.html :
<html>
<frameset rows="22,*" border="0">
<frame name="menu" src="menu.html" marginheight=0 marginwidth=0>
<frame name="submenu" src="content1.html">
</frameset>
</html>
menu.html :
<html>
<body>
<table width=100% border=0 spacing=1>
<tr>
<td><a href="content1.html" target="submenu">Content 1</a></td>
<td><a href="content2.html" target="submenu">Content 2</a></td>
</tr>
</table>
</body>
</html>
content1.html :
<html>
<body>
<p>Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate strategy foster collaborative thinking to further the overall value proposition. Organically grow the holistic world view of disruptive innovation via workplace diversity and empowerment.</p>
</body>
</html>
content2.html :
<html>
<body>
<p>Seasonal, whipped java aftertaste lungo ristretto, a turkish chicory affogato saucer. Medium, spoon et skinny americano cappuccino lungo dripper.</p>
</body>
</html>
Поведение ожидаемое: когда мы нажимаем на ссылку меню, содержимое подменю обновляется.
Теперь я добавляю строку в тело content2.html: <script>var name = "why" ;</script>
Если я нажму на ссылку "контент 2", содержимое обновится, но с этого момента, когда я нажму любую ссылку, содержимое фрейма откроется в новой вкладке. Я могу воспроизвести это поведение в любом современном браузере (Chrome, Firefox, Edge,...): переменная name
javascript в «основном» скрипте изменяет поведение набора фреймов.
У кого-нибудь есть объяснение этому? Я не думаю, что name
является зарезервированным ключевым словом? И почему это открытие новой вкладки, а не сломанный скрипт?