当前位置: 首页 > news >正文

怎么用PHP做网站留言板宁波百度快照优化排名

怎么用PHP做网站留言板,宁波百度快照优化排名,中国做的最好的网站有哪些,用什么网站做查重报告文章目录 Iframe内嵌相互传递BroadcastChannel同标签页数据传递localStorage中间人传递未完待续... Iframe内嵌相互传递 使用window.postMessage()的这个html5特性去跨域传递数据,不受跨域限制。 父层: sendMes(){ // 向iframe发送let iframdom this…

文章目录

  • Iframe内嵌相互传递
  • BroadcastChannel同标签页数据传递
  • localStorage中间人传递
  • 未完待续...

Iframe内嵌相互传递

使用window.postMessage()的这个html5特性去跨域传递数据,不受跨域限制。

父层:

sendMes(){ // 向iframe发送let iframdom = this.$refs.iframdom // 拿到iframe的domlet _window = iframdom.contentWindow // 拿到iframe的window对象let _document = iframdom.contentDocument // 拿到iframe的document对象_window.postMessage({type: 'sendMes', text: '内容'}, '*') // 注意点:1 第一个参数传内容用对象装,因为webpack会默认主动触发一次,// 即使sendMes没执行,这样被第一次触发的时候我们能通过对象的内容去区分。// 2 第二个参数写传入的地址是什么,如果不限制地址写*即可
}window.addEventListener("message", (e) => { // 接收子层// e.data及postMessage的第一个参数,e.origin及postMessage的第二个参数
})

子层:

window.addEventListener("message", (e) => { // 接收父层// e.data及postMessage的第一个参数,e.origin及postMessage的第二个参数
})sendOut(){ // 向父层发送window.top.postMessage({type: 'sendMes', text: '内容'}, '*') 
}

个人对这个api的看法:

  • 能够支持跨域,这样不同项目的网站都能相互通信了。
  • 当传输的内容多了,整个工程到处都是postMessage,到处监听,会非常的混乱(建议监听统一放到类似App.vue的组文件中)。
  • 父层与子层需要定好规则,例如你的项目是子层,就要去问负责开发父层网站的开发人员,怎么按照他们的规范去传递数据和获取回数据

这里推荐篇基础使用文章:【记录postMessage的详细使用】
再推荐篇补充的:【终于搞懂了 Iframe (跨窗口通信)】


BroadcastChannel同标签页数据传递

这个api适合同一个浏览器中,访问多个标签页,标签页之间的通信:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style></style>
</head><body><button id="btn">点击</button><script>let btnDom = btnconst channel = new BroadcastChannel('card')btnDom.onclick = function () {channel.postMessage({a: 1})}channel.onmessage = (e) => {console.log('监听到信息', e.data);}</script>
</body></html>

当a标签页点击了按钮,b标签页就能够接收到数据。兼容性也很好。

当然在框架中使用有些注意事项:

用添加监听器的方式去监听channel的信息传递,这样好销毁内存

channel.addEventListener('message', handler)
channel.removeEventListener('message', handler) // 销毁

还有一个要注意的,如果postMessage时传入的是框架里的响应式变量是会报错的,传入的时候用…处理下。

综上,最好单独写个js文件去调用BroadcastChannel:

const channel = new BroadcastChannel('demo')export function sendMsg(type, content) {channel.postMessage({type,content,})
}export function listenMsg(callback) {const handler = (e) => {callback && callback(e.data)}channel.addEventListener('message', handler)return ()=>{channel.removeEventListener('message', handler) // 让组件在使用的时候能够得到销毁函数,在生命周期钩子中销毁}
}

localStorage中间人传递

localStorage是可以跨页签的,只要是同域的都共用一个localStorage缓存,利用这个特性可以:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style></style>
</head><body><button id="setData">存储</button><button id="getData">获取</button><script>let setDataDom = setDatalet getDataDom = getDatasetDataDom.onclick = function () {localStorage.setItem('a', 1)}getDataDom.onclick = function () {console.log(localStorage.getItem('a'));}</script>
</body></html>

iframe嵌套相同域名的页面应该也是可以正常使用的,不过

  • 多占用localStorage资源
  • 无法做到主动接收

这里提个醒sessionStorage每个页签都是独立的


未完待续…

http://www.dt0577.cn/news/4655.html

相关文章:

  • 都是做面食网站广告行业怎么找客户
  • 沈阳快速建站公司有哪些百度地图人工客服电话
  • jquery 类似wordpress重庆网站seo诊断
  • 北京市建设工程造价管理协会网站东莞百度搜索优化
  • 西安市网站制作公司营销推广活动策划书模板
  • 仙居做网站在哪里做seo的基本工作内容
  • 北京网站备案拍照的地点宁波seo网站排名优化公司
  • 专门做win7系统的网站百度客服中心电话
  • 沈阳网站建设索王道下拉seo站长工具平台
  • 网站开发有多少种推广公司经营范围
  • wordpress更改了域名 图片不显示陕西seo主管
  • 鸡泽信息网seo如何优化排名
  • 做网站宝鸡蓝牙耳机网络营销推广方案
  • 阿里云自己做网站企业网站建设方案书
  • 沙井做网站的公司外包公司值得去吗
  • 专注与开发网站的北京网络公司优秀的营销案例
  • 景德镇陶瓷学院校友做网站的seo是什么意思 职业
  • 企业建站业务还能做吗推广赚钱的微信小程序
  • dedecms怎么做网站怎么创建域名
  • 文本编辑器 网站深圳市网络品牌推广
  • 沈阳出名网站信息流优化师招聘
  • 湛江外包做网站二级域名查询网站
  • 企业网站分析案例广东广州疫情最新情况
  • 做网站开发需要学什么抖音账号权重查询入口
  • 做网站做得好的公司优化营商环境心得体会个人
  • 太原做网站公司短视频营销推广方式
  • 泰安网签房查询百度推广优化是什么意思
  • 六安门户网站建设哪家好互联网营销师培训机构哪家好
  • 在centos上做网站东莞今天新增加的情况
  • 手机网站 软件简述常用的网络营销方法