使用 jquery 从 iframe 加载 div 中的内容
loading content in a div from iframe with jquery
我的 "index.php" 页面中有一个下拉列表菜单,可以在 iframe 中加载另一个页面(取决于选择),如下所示:
<head>
<script language="javascript">
function setPic(elem) {
var image = document.getElementById('canvas');
image.src = elem.value;
}
</script>
</head>
<body>
<div id="header">
loading area
</div>
<div id="content">
<form>
<select onchange="setPic(this);">
<option value="/network/page_elements/lvl1.php" >lvl1</option>
<option value="/network/page_elements/lvl2.php" >lvl2</option>
<option value="/network/page_elements/lvl3.php" >lvl3</option>
<option value="/network/page_elements/lvl4.php" >lvl4</option>
</select>
</form>
<iframe src="/network/page_elements/lvl1.php" id="canvas"></iframe>
</div>
</body>
所以我正在 iframe 中加载例如页面 "lvl1.php"。此 "lvl1.php" 页面包含如下按钮:
<form method="post">
<input type="button" value="1" id="A1" />
</form>
按下此按钮时,它会执行 jquery 代码,该代码应在 "index.php" 页面上的 div 中加载一些 id="header" 的结果。 .wich 它没有。
jquery 看起来像这样:
$(document).ready(function() {
$('#header').load('network/page_elements/header.php');
$('input').click(function() {
var page=$(this).attr('id');
$('#header').load('network/buttons/' + page + '.php');
});
return false;
});
所以在这个例子中,当按下按钮时,它应该执行一个名为 "A1.php" 和 post 的脚本,其结果在索引页面上的 div 和 id="header" 中。
如果我将按钮代码放在 "index.php" 页面上,它可以正常工作...但如果在 iframe 内的加载页面上按下它,它什么也不做。
知道我做错了什么吗?
您必须访问父 window 的 DOM,因为 javascript 在框架内执行
window.opener.$("#header")
how to access parent window object using jquery?
终于搞定了:
我像这样更改了 jquery 以访问父级 window:
$("#header",window.parent.document).load('/network/buttons/' + page + '.php');
感谢 Digitaldouble 的创意
我的 "index.php" 页面中有一个下拉列表菜单,可以在 iframe 中加载另一个页面(取决于选择),如下所示:
<head>
<script language="javascript">
function setPic(elem) {
var image = document.getElementById('canvas');
image.src = elem.value;
}
</script>
</head>
<body>
<div id="header">
loading area
</div>
<div id="content">
<form>
<select onchange="setPic(this);">
<option value="/network/page_elements/lvl1.php" >lvl1</option>
<option value="/network/page_elements/lvl2.php" >lvl2</option>
<option value="/network/page_elements/lvl3.php" >lvl3</option>
<option value="/network/page_elements/lvl4.php" >lvl4</option>
</select>
</form>
<iframe src="/network/page_elements/lvl1.php" id="canvas"></iframe>
</div>
</body>
所以我正在 iframe 中加载例如页面 "lvl1.php"。此 "lvl1.php" 页面包含如下按钮:
<form method="post">
<input type="button" value="1" id="A1" />
</form>
按下此按钮时,它会执行 jquery 代码,该代码应在 "index.php" 页面上的 div 中加载一些 id="header" 的结果。 .wich 它没有。
jquery 看起来像这样:
$(document).ready(function() {
$('#header').load('network/page_elements/header.php');
$('input').click(function() {
var page=$(this).attr('id');
$('#header').load('network/buttons/' + page + '.php');
});
return false;
});
如果我将按钮代码放在 "index.php" 页面上,它可以正常工作...但如果在 iframe 内的加载页面上按下它,它什么也不做。
知道我做错了什么吗?
您必须访问父 window 的 DOM,因为 javascript 在框架内执行
window.opener.$("#header")
how to access parent window object using jquery?
终于搞定了:
我像这样更改了 jquery 以访问父级 window:
$("#header",window.parent.document).load('/network/buttons/' + page + '.php');
感谢 Digitaldouble 的创意