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

用vs2013做网站教程宿迁seo

用vs2013做网站教程,宿迁seo,网站导航的交互怎么做,网站建设 年终总结vue 与 iframe 通讯 发送数据vue 向 iframe 发送数据iframe 向 vue 发送数据接收信息( vue iframe 通用) 实现相互通讯通讯流程图实现代码vue 页面iframe页面iframe 内部重定向访问地址,更新 vue 路由 访问跨域代码下载 前言#xff1a;vue嵌套iframe实现步骤 发送数据… vue 与 iframe 通讯 发送数据vue 向 iframe 发送数据iframe 向 vue 发送数据接收信息( vue iframe 通用) 实现相互通讯通讯流程图实现代码vue 页面iframe页面iframe 内部重定向访问地址,更新 vue 路由 访问跨域代码下载 前言vue嵌套iframe实现步骤 发送数据 vue 向 iframe 发送数据 // utils/common.js/** vue向iframe发送数据* content iframe.contentWindow* type 事件类型* data 传送的数据*/export function sendPostMessage(content, type, data {}) {content.postMessage({ type, data }, *);}iframe 向 vue 发送数据 // update.html base.html includes.html ...function sendPostMessage(type, data {}) {window.parent.postMessage({ type, data }, *);}接收信息( vue iframe 通用) 实例化PubSub时, 入参需提前定义不然接收不到消息 // utils/iframe-message.js/*** 接收页面 postMessage 发送的信息* Pubsub提供多种类型供订阅使用方法如下* 1. 需要接收webSocket的地方import eventsPub from 本文件路径* 2. eventsPub.on(类型, callback)* 例* const receive data console.log(eventName, data)* eventsPub.on(eventName, receive)* 3.不需要继续接收时调用* eventsPub.remove(eventName, receive) 移除callback*//** 重要: postMessageEvent 中的 type 需提前定义 */class PubSub {list {};constructor(events) {this.list {};events.forEach(v {this.list[v] [];});}on(ev, callback) {if (this.list[ev]) {this.list[ev].push(callback);return true;} else {return false;}}emit(ev, data) {// data拷贝: 防止其他callback修改dataconst dataStr JSON.stringify(data);if (this.list[ev]) {this.list[ev].forEach((v) {try {v(JSON.parse(dataStr));} catch (err) {console.log(callback error:, err, v);}});return true;} else {return false;}}remove(ev, callback) {if (callback this.list[ev]) {this.list[ev].forEach((v, i) {if (v callback) {this.list[ev].splice(i, 1);}});return true;} else {return false;}}}// 订阅的类型需要在postMessageEvent中提前定义好const postMessageEvent [PAGE_ISREADY]const eventsPub new PubSub(postMessageEvent);window.addEventListener(message, function (e) {if (e.data?.type) {eventsPub.emit(e.data.type, e.data.data)}});export default eventsPub;实现相互通讯 通讯流程图 vue路由更新 及 iframe地址刷新时两者之间的通讯流程 实现代码 vue 页面 // IframeTemplate.vueimport { onMounted, onBeforeUnmount } from vue;import eventsPub from utils/iframe-message.jsimport { sendPostMessage } from utils/common.jsonMounted(() {// 接收信息eventsPub.on(PAGE_ISREADY, pageIsReady)});onBeforeUnmount(() {eventsPub.remove(PAGE_ISREADY, pageIsReady)});function pageIsReady() {// console.log(PAGE_ISREADY)updateIframeLoginInfo()}// 发送信息/** iframe 页面登录信息同步 */function updateIframeLoginInfo() {const iframeWindow $(#common-iframe)[0].contentWindowsendPostMessage(iframeWindow, LOGIN_INFO, {token: localStorage.getItem(TOKEN),userInfo: localStorage.getItem(USER) || {}})}iframe页面 // utils/iframe-message.js// 将该文件写成原生写法: 删除 remove 之后的代码// 添加下边的代码/** 创建消息接收实例 */const postMessageEvent [LOGIN_INFO]const eventsPub new PubSub(postMessageEvent);/** 接收父页面的消息 */window.addEventListener(message, function (e) {if (e.data?.type) {eventsPub.emit(e.data.type, e.data.data)}});/** 发送消息 */function sendPostMessage(type, data {}) {window.parent.postMessage({ type, data }, *);}// base.html、includes.html、update.html...// 在所有的页面中引入iframe-message.js、jquery.jsscript typetext/javascript src./js/jquery.js/scriptscript typetext/javascript src./js/iframe-message.js/script// 并添加下边的代码script typetext/javascript/** 获取当前登录用户信息并存储 */function setUserInfo(data) {const { token, userInfo } data;const curToken localStorage.getItem(TOKEN)const curUser localStorage.getItem(USER)curToken ! token localStorage.setItem(TOKEN, token)curUser ! userInfo localStorage.setItem(USER, userInfo)}$(document).ready(() {// GET VUE MESSAGEeventsPub.on(LOGIN_INFO, setUserInfo)// NOTIFY VUE MESSAGEsendPostMessage(PAGE_ISREADY, { iframeIsReady: true })})/scriptiframe 内部重定向访问地址,更新 vue 路由 需将iframe的地址添加到vue路由上 iframe页面判断是否是内部跳转并将页面地址发送到vue // base.html...function setUserInfo(data) {// 其他...localStorage.setItem(FROM_PARENT, true)}$(document).ready(() {// 其他.../** iframe内部页面跳转加载完成 - */const fromParent localStorage.getItem(FROM_PARENT)localStorage.removeItem(FROM_PARENT)// 判断是否是vue 页面重定向的const { pathname, href, search } window.locationlet path pathname.split(.)[0];sendPostMessage(PAGE_ISREADY, !fromParent ? {} : { path })}) vue 接收到地址后页面路由修改但iframe页面不需要再刷新 // IframeTemplate.vue// 监听路由变更watch(route, () {const historyParams history.state.params// 只更新路由时iframe 页面地址不更新if (historyParams historyParams.justRoute isFrameSrcUpdate route.path !isMounted) {isFrameSrcUpdate ;return;}// iframe 页面地址更新createIframe()});/** iframe 页面加载完毕* 1. 登陆信息同步* 2. iframe 内部跳转,页面地址变化后vue route也修改(但页面不刷新)*/function pageIsReady(data) {updateIframeLoginInfo()if (data?.path) {let { path, name, query } dataisFrameSrcUpdate path;const exit router.getRoutes().find(i i.path path)/** iframe 发送了一个未添加路由的页面* 1. 添加该页面路由,为能正常访问* 2. 在当前页面刷新后会有路由不存在的问题,* 需在整体添加路由的位置将当前页面添加进进去*/!exit router.addRoute({path,name,meta: { isIframe: true },component: () import(../views/IframePage.vue)})// justRoute只更新路由不刷新页面router.push({ path, query, state: { params: { justRoute: true } } });}}访问跨域 问题 部署到环境上后vue页面访问iframe地址会有访问跨域问题。解决方案 在部署vue 服务器配置时允许访问iframe的域名。 如: Apache 部署vue 的服务器配置上添加一行配置Header always append X-Frame-Options iframe访问的域名 代码下载 查看代码地址
http://www.dnsts.com.cn/news/163548.html

相关文章:

  • 网站建设案例要多少钱网站建设都需要什么文案
  • 小说网站静态模板企业网站如何seo
  • 需要建设一个什么样的网站北京建设网办事大厅
  • 手机网站友情链接怎么做织梦怎么查看网站点击
  • 手机搭建网站软件下载领卷网站如何做代理
  • 企业网站硬件建设方案网站主题有哪些内容
  • 网站需求建设书封面设计网站
  • 做网站的设计流程企业网站开发工资
  • 网络公司给我做网站我有没有源代码版权吗?如何更改asp网站自定义产品顺序
  • 网站的设计要素微机做网站的软件
  • 招标网站建设申请报告企业一般用什么邮箱?
  • 阿里云服务器 怎么设置网站环境wordpress文章相关插件
  • 常州网站建设服务主机屋做淘宝客网站
  • php 数据录入网站建立网站需要备案吗
  • 网站备案跟做哪个推广有关系吗买完阿里云域名如何做网站
  • 网站域名代理备案wordpress支付接口吗
  • 百汇游戏网站开发商app定制开发最牛青岗科技公司
  • 江夏区做网站网络网站推广选择乐云seo
  • 大连网站设计案例运营小程序的成本有哪些
  • 建设银行社保卡查询网站专业做红木家具网站
  • asp语言的网站建设凡科网站能在百度做推广吗
  • 靖江网站建设免费网站注册免费创建网站
  • 家具设计网站大全网站建设文献
  • 服务机构电子商务网站有哪些有没有公司做农副产品网站的
  • 厦门启明星网站建设wordpress手机评论框
  • wordpress可以建立多个站点定制网站的制作流程
  • 西安市未央区建设局官方网站网站做推广 建设哪种类型合适
  • 儿童 html网站模板如何做自己的业务网站
  • 孟村网站建设价格网站后台功能技术要求
  • 飞飞cms悠悠电影网站网站内页怎样做优化