У меня есть такой набор кадров:
<frameset rows="120px,100%">
<frame name="top" id="top" src="top.php" noresize frameborder="0" scrolling="no" />
<frame name="main" id="main" src="main.php" noresize frameborder="0" scrolling="yes" />
Внутри файла main.php у меня есть:
<script>
function reload_top() {
top.frames['top'].location.href= "http://www.google.com";
}
</script>
И событие onload тела main.php:
<body onload="reload_top();">
Чего я хотел бы добиться, так это чтобы каждый раз, когда кто-то загружал main.php, этот файл перезагружал верхний фрейм top.php из верхнего, но пока я могу только заставить его вырваться из набора фреймов и загрузить новую страницу. …
Я пробовал любой из них:
document.getElementById('top').src = "http://www.google.com";
window.top.location.href = "http://www.google.com";
top.frames['top'].location.href= "http://www.google.com";
Никто из них не работает.
Что я делаю неправильно?
Спасибо
В качестве информации тег рамок больше не поддерживается в HTML5. Вы хотите использовать iframe для загрузки разных страниц на одной странице?
Проблема, с которой вы не можете установить местоположение фрейма, заключается в том, что он не определен при попытке доступа к фрейму
например код
<iframe id="topf" src="stacktop.php"></iframe>
<script>
function reload_top() {
var a = document.getElementById('topf');
a.src = "http://www.aapastech.com";
}
</script>
Попробуйте другой ответ здесь мы используем событие onload в элементе frameset
<html>
<head>
<title>Frame: Onload & Onunload Examples</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function testOnload() {
// alert('OnLoad: Alert in testOnload() executed by onLoad property of frameset tag.');
document.getElementById("top").src="http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_win_frames2";
}
function testOnUnload() {
//alert('OnUnload: Alert in testOnUnload() executed by onUnLoad property of frameset tag.')
}
//-->
</script>
</head>
<frameset rows="80,*" frameborder="0" border="0" framespacing="0"onLoad="javascript:testOnload()"onUnload="javascript:testOnUnload(); alert('onUnload: alert in frameset tag')">
<frame name="topFrame" scrolling="NO" noresize src="https://developers.google.com/oauthplayground/" id="top">
<frame name="mainFrame" src="https://developers.google.com/oauthplayground/">
<noframes>
<body bgcolor="#FFFFFF">
<p>Sorry, this page needs a browser that supports frames.</p>
</body>
</noframes>
</frameset>
</html>
HTML5 не поддерживает набор фреймов, но используйте jquery и попробуйте
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"> </script>
<script>
$(document).ready(function(){
document.getElementById("top").src="http://yahoo.com";
});
</script>
</head>
<frameset cols="25%,*,25%" id="abc">
<frame src="http://www.google.com" id="top" name="top">
<frame src="http://www.google.com">
<frame src="http://www.google.com">
</frameset>
</html>
после еще нескольких копаний я обнаружил, что способ нацеливания на кадр из другого кадра заключается в использовании:
parent.document.getElementById('frameName').src
теперь моя функция работает и выглядит так:
<script>
function reload_top() {
parent.document.getElementById('top').src = "venues.php";
}
</script>
Спасибо за попытку помочь парням.