parent.postMessage bug All In One
parent.postMessage bug All In One
parent.postMessage not working
const sendScrollMessage = () => {
const app = document.querySelector('#app-content');
const clientHeight = app.clientHeight;
console.log(clientHeight, window.parent);
console.log('2',clientHeight, parent);
// 测试环境
parent.postMessage({
type: 'iframeHeight',
height: clientHeight,
}, 'https://app.xgqfrms.xyz/tools/landing-page');
};
parent ok ✅
https://iframe.xgqfrms.xyz/post-message/heat-map.html
const sendScrollMessage = () => {
// const app = document.querySelector('#app');
// const app = document.querySelector('#root');
const app = document.querySelector('body');
// const height = Math.abs(app.scrollTop);
const rect = app.getBoundingClientRect();
const clientHeight = app.clientHeight;
const scrollHeight = app.scrollHeight;
if(!parent) {
return;
}
console.log('parent window', parent);
parent.postMessage({
type: 'iframeHeight',
clientHeight: clientHeight,
scrollHeight: scrollHeight,
rect: rect,
}, 'https://iframe.xgqfrms.xyz/post-message/heat-map.html');
};
drawer 抽屉层 bug ??? ❌
window.parent !== parent (如果存在 drawer ✅)
solution ✅
window.parent.postMessage / window.postMessage
const sendScrollMessage = () => {
const app = document.querySelector('body');
const rect = app.getBoundingClientRect();
const clientHeight = app.clientHeight;
const scrollHeight = app.scrollHeight;
window.parent.postMessage({
type: 'iframeHeight',
clientHeight: clientHeight,
scrollHeight: scrollHeight,
rect: rect,
}, 'https://iframe.xgqfrms.xyz/post-message/heat-map.html');
};
height: 100%;
<div class="phone-wrapper">
<div class="phone-outer">
<section
id="parentPage"
class="heatmap-box"
:style="`height: ${dynamicHeight}px;`">
<iframe id="childPage" style="width: 100%; height: 100%; min-height: 600px;" :src="previewUrl" frameborder="0"></iframe>
</section>
</div>
</div>
<div class="heatmap-checkbox">
<el-checkbox v-model="showHeatMap" @change="changeShow" :disabled="!isDragonflyLandingPage">
开启热力图
<dap-popover
placement="top"
title=""
width="136"
trigger="hover"
content="生成的落地页可查看热力图。">
<icon-svg
slot="reference"
icon-class="question-circle-o"
class="m-l-5 f12 c-999 icon-hover"
/>
</dap-popover>
</el-checkbox>
</div>
demo 🚀
const sendIframeDynamicHeightMessage = () => {
const app = document.querySelector('#appt');
const clientHeight = app.clientHeight;
console.log('\nclientHeight =', clientHeight);
console.log('window =', window);
console.log('window.parent =', window.parent);
console.log('window.location =', window.location);
const host = window.location.host;
// const protocol = window.location.protocol;
// const url = `${protocol}//${host}/tools/landing-page`;
const url = `${window.location.origin}/tools/landing-page`;
let env = '';
switch (host) {
case 'dev.xgqfrms.xyz':
env = '测试环境';
break;
case 'release.xgqfrms.xyz':
env = '灰度环境';
break;
case 'dap.xgqfrms.xyz':
env = '生产环境';
break;
default:
break;
}
window.parent.postMessage({
type: 'iframeHeight',
height: clientHeight,
env: env,
}, url);
};
window.location.ancestorOrigins
const sendScrollMessage = () => {
const app = document.querySelector('#app-content');
const clientHeight = app.clientHeight;
console.log('\nclientHeight =', clientHeight);
console.log('window =', window);
console.log('window.parent =', window.parent);
console.log('window.location =', window.location);
const host = window.location.host;
window.parent.postMessage({
type: 'iframeHeight',
height: clientHeight,
env: '测试环境',
}, 'http://dev.xgqfrms.xyz/tools/landing-page');
};
window.onload = function () {
console.log('iframe 页面加载完成');
sendScrollMessage();
}
refs
©xgqfrms 2012-2020
www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!
原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!
本文首发于博客园,作者:xgqfrms,原文链接:https://www.cnblogs.com/xgqfrms/p/15751002.html
未经授权禁止转载,违者必究!
标签:
bug
, postMessage
, parent.postMessage
, window.postMessage
, window
, window.parent.postMessage
, window.parent
, iframe
, JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2020-12-30 chmod +x vs chmod 755 All In One
2020-12-30 webpack 打包性能优化 All In One
2020-12-30 git 取消未成功的 merge
2019-12-30 How to dynamically create an SVG title element in JavaScript All In One
2015-12-30 最快的 android 安卓模拟器 genymotion!
2015-12-30 网站备案查询 All In One
2015-12-30 关于:在 virtualbox 中使用ubuntu 不能全屏显示桌面的全部内容, top menu bar close/show,的解决方案!