jQuery 是一个快速、简洁的 JavaScript 库,它简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。iframe 是 HTML 中的一个元素,用于在当前页面内嵌另一个 HTML 页面。通过 jQuery,可以在 iframe 和父页面之间进行 JavaScript 方法的调用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Parent Page</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<iframe id="myIframe" src="child.html"></iframe>
<script>
$(document).ready(function() {
// 监听从 iframe 发送的消息
window.addEventListener('message', function(event) {
if (event.origin !== 'http://example.com') return; // 安全检查
console.log('Message received from iframe:', event.data);
// 调用父页面的方法
parentMethod(event.data);
});
function parentMethod(data) {
alert('Parent method called with data: ' + data);
}
});
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Child Page</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<button id="sendMessage">Send Message to Parent</button>
<script>
$(document).ready(function() {
$('#sendMessage').click(function() {
// 向父页面发送消息
window.parent.postMessage('Hello from iframe!', 'http://example.com');
});
});
</script>
</body>
</html>
原因:
postMessage
方法无法正常工作。解决方法:
postMessage
的第二个参数(目标源)与父页面的实际源匹配。event.origin
的检查,确保只处理来自可信源的消息。通过以上步骤,可以有效地解决 iframe 和父页面之间调用 JavaScript 方法时可能遇到的问题。