从零开始搭建前端监控系统(三)——实现控制iframe前进后退

前言

本系列文章旨在讲解如何从零开始搭建前端监控系统。

项目已经开源

项目地址:

  • https://github.com/bombayjs/bombayjs (web sdk)
  • https://github.com/bombayjs/bombayjs-server (服务端,用于提供api)(未完)
  • https://github.com/bombayjs/bombayjs-admin (后台管理系统,可视化数据等)(未完)

您的支持是我们不断前进的动力。

喜欢请start!!!

喜欢请start!!!

喜欢请start!!!

本文是该系列第三篇,重点讲解如何控制iframe的前进后退。

系列文章:

示例

https://abc-club.github.io/demo/iframe/demo2/

演示

源码

https://github.com/abc-club/demo

如果想看跟复杂的例子,可以看bombayjs的源码

后台截图如下:

难点

document.getElementById(‘iframe id‘).contentWindow.history.back();

以上面这种方式控制会存在跨域问题!!!

原理

  1. 解决iframe的跨域问题,我们需要通过postMessage实现iframe的通信
  2. 通过window.history.back()和window.history.forward()控制前进后退

实现

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <div>
    <iframe id=‘iframe‘></iframe>
    <br/>
    url: <span id=‘url‘></span>
    <br/>
    <button id=‘back‘ onclick=‘back()‘>back</button>
    <button id=‘forward‘ onclick=‘forward()‘>forward</button>
</div>
  <script>
    var url = ‘./iframe.html‘
    var div = document.getElementById(‘url‘),
        iframe = document.getElementById(‘iframe‘)
    iframe.src = url
    div.innerHTML = url
    window.addEventListener(‘message‘, function(event) {
      if (!event.data.url) return
      div.innerHTML = event.data.url;
    }, false)

    function back() {
      iframe.contentWindow.postMessage(‘back‘, ‘*‘);
    }

    function forward() {
      iframe.contentWindow.postMessage(‘forward‘, ‘*‘);
    }

  </script>
</body>
</html>

iframe.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <div>
    <a href=‘#a‘>to #a</a>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p>1</p>
    <p id=‘a‘>a</p>
    <p>2</p>
    <p>2</p>
    <p>2</p>
    <p>2</p>
    <p>2</p>
    <p>2</p>
    <p>2</p>
    <p>2</p>
</div>
  <script>
    window.addEventListener(‘message‘, function(event) {
      if (event.data === ‘back‘) {
        window.history.back()
      } else {
        window.history.forward()
      }
    }, false)

    window.addEventListener(‘hashchange‘, function(event) {
      window.parent.postMessage({
        url: location.href
      }, ‘*‘)
      return
    }, false)

  </script>
</body>
</html>

更多资源

https://github.com/abc-club/free-resources

本篇文章由一文多发平台ArtiPub自动发布

原文地址:https://www.cnblogs.com/aoping/p/11722708.html

时间: 2024-10-17 21:18:12

从零开始搭建前端监控系统(三)——实现控制iframe前进后退的相关文章

搭建前端监控系统(二)JS错误日志收集篇

===================代码展示================    监控系统地址: Demo地址                          页面探针代码: GitHub地址             分析后台地址: GitHub地址                        展示平台地址: GitHub地址                        ===================代码展示================ 对于前端应用来说,Js错误的发生直接

Linux系统搭建zabbix监控系统实例讲解

第一步,配置本地yum仓库,如下 1,挂载,挂载光驱到/mnt mount /dev/cdrom /mnt2,创建目录 mkdir -p /repo/cos7dvd3,然后使用命令创建yum仓库文件,注意指定正确的软件源位置yum-config-manager --add-repo file:///repo/cos7dvd/4,使用 yum repolist命令检测刚创建的yum软件仓库是否正常.5,使用yum clean all 清空缓存(非必要步骤,在yum更新时使用)6,使用vim编辑器给

前端监控系统

概述在开发项目的过程中,正式环境出现了浏览器crash,这种情况在开发过程中无法复现,是一个需要长期追踪的问题,因此项目中引入了前端监控系统. 资源加载出错的捕获方案<img src="image.gif" onerror="myFunction()"> document.getElementById("myImg").addEventListener("error", myFunction); function

使用monit搭建一个监控系统

上周用monit搭建或者说定制了一个监控系统,来监控服务器发生事情.当然了主要是监控异常,因为我们的产品属于服务器类型,很多进程都daemon,要不停的运行.我们搭建监控目的不过是出现问题能够及时的知道,平时可从web UI上看到整个系统的状况,同时它本身要轻量级,不要影响性能.当然了类似的产品很多了,比如Ganglia,我在老科长波哥曾经搭建过一个Ganglia系统监控科室十几台服务器,让我很是崇拜.本文重点介绍monit.                      monit是一个可以监控系

自动化监控系统(三) 搭建xadmin做网站后台

Django有个自带的admin后台,不过界面不怎么好看,这里我用xadmin 我的python版本是3.5,可以使用支持py3的xadmin:https://github.com/sshwsfc/xadmin xadmin部署步骤: 1.把xadmin整个目录拷贝到项目里面 2.需要安装的依赖包: django~=1.9.0django-crispy-forms~=1.6.0django-reversion~=2.0.0django-formtools==1.0future==0.15.2ht

搭建zabbix监控系统详解

博文大纲:一.前言 二.zabbix监控架构三.搭建Zabbix监控服务器 一.前言 : 要想实时的了解服务器的运行状况并且能在出现问题时及时解决,利用监控软件是一个很好的选择,而zabbix监控系统则在众多监控软件中脱颖而出. zabbix是一个基于web界面的企业级开源监控软件,Zabbix服务器需要LAMP环境或LNMP环境,提供分布式系统监控与网络监视功能.具备主机的性能监控,网络设备性能监控,数据库性能监控,多种告警方式,详细报表.图表的绘制等功能.监测对象可以是Linux或Windo

如何借助Monit搭建服务器监控系统?(1)

许多Linux管理员依赖一种集中式远程监控系统(比如Nagios或Cacti),检查网络基础设施的健康状况.虽然集中式监控系统为管理员在处理许多主机和设备时简化了工作,但专用的监控设备显然成了单一故障点;要是监控设备出现故障或者由于其他原因(比如硬件坏掉或网络停运)而联系不上,你就失去了可见性,无法了解整个基础设施的状况. 想为监控系统增添冗余机制,一个办法就是起码在网络上任何关键/核心服务器上安装独立的监控软件(作为一条退路).那样万一集中式监控系统坏掉,你仍能够通过备用的监控工具,保持可见性

Qt编写安防视频监控系统18-云台控制

一.前言 云台控制是视频监控系统中必备的一个功能,对球机进行上下左右的移动,还有焦距的控制,其实核心就是控制XYZ三个坐标轴,为了开发这个模块,特意研究了各种云台控制的方法和开源库比如soap,有些厂家使用自家SDK控制云台,但是大部分都会选择onvif来控制,毕竟是国际标准的通用的,只要符合这个标准的都可以使用,onvif协议的解析通常用的开源库是soap,涵盖的内容比较全,包括获取各种设备信息和回控等,缺点就是比较臃肿,使用非常不容易,函数名实在是有点不顺手,很多新手都绕在其中不知所措最后放

庖丁解监控系统(三)

这一篇咱们来聊聊高可用   欢迎大家加入运维开发讨论交流群来交流,群号 365534424 我借用一个高可用性的定义: 高可用性H.A.(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性.它与被认为是不间断操作的容错技术有所不同.HA系统是目前企业防止核心计算机系统因故障停机的最有效手段. 那么高可用,就是高可用性良好的系统.多少算高呢,我以前呆过的BAT某公司喜欢用小数点以后几个9来衡量.当然小数点