解决同一页面中两个iframe互相调用jQuery、JS函数的方法,可以采用以下两种方式:
方式一:使用window.parent获取父页面的作用域
在iframe内部通过window.parent
获取到父页面的作用域,然后就可以使用父页面的变量和函数。
// 父页面
function getIframeContent() {
var iframe1 = document.getElementById("iframe1");
var iframe1Document = iframe1.contentDocument || iframe1.contentWindow.document;
iframe1Document.getElementById("iframe1-div").innerHTML = "这是iframe1的div";
}
// iframe1页面
function getIframeContent() {
var iframe2 = window.parent.document.getElementById("iframe2");
var iframe2Document = iframe2.contentDocument || iframe2.contentWindow.document;
iframe2Document.getElementById("iframe2-div").innerHTML = "这是iframe2的div";
}
// 在iframe1中调用父页面方法
window.parent.getIframeContent();
// 在iframe2中调用父页面方法
window.parent.getIframeContent();
方式二:跨域访问
如果两个iframe不在同一个域中,就需要进行跨域访问。可以使用postMessage方法,实现两个iframe进行数据传递和函数调用。
// 父页面
function receiveMessage(event) {
if (event.origin !== 'http://example.com') {
return;
}
// 接收来自 iframe1 的数据
if (event.source === iframe1.contentWindow) {
// iframe1 传递过来的数据
var data = event.data;
// 调用 iframe1 的方法
iframe1.contentWindow.iframe1Method();
}
}
window.addEventListener('message', receiveMessage);
// iframe1页面
function sendDataToIframe2() {
// 向父页面发送数据
window.parent.postMessage('数据', 'http://example.com');
}
// iframe2页面
function receiveMessage(event) {
if (event.origin !== 'http://example.com') {
return;
}
// 接收来自 iframe2 的数据
if (event.source === iframe2.contentWindow) {
// iframe2 传递过来的数据
var data = event.data;
// 调用 iframe2 的方法
iframe2.contentWindow.iframe2Method();
}
}
window.addEventListener('message', receiveMessage);
以上两种方式均可以实现同一页面中两个iframe互相调用jQuery、JS函数的需求,具体使用哪种方式需要根据具体场景进行判断。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决同一页面中两个iframe互相调用jquery,js函数的方法 - Python技术站