webview-screenshot-comparison.uvue 2.0 KB
Newer Older
1
<template>
2
  <view v-if="!isCustomNavigationBar" class="top-placehoder"></view>
3 4
  <web-view id="webview-screenshot-comparison" class="webview-screenshot-comparison" :webview-styles="webviewStyles"
    :src="src" @loaded="loaded" @error="error">
5 6 7 8
  </web-view>
</template>

<script>
DCloud-WZF's avatar
DCloud-WZF 已提交
9 10
  import { state } from '@/store/index.uts'

11 12 13 14 15 16 17
  export default {
    data() {
      return {
        baseSrc: '',
        src: '',
        webviewContext: null as WebviewContext | null,
        isLoaded: false,
18 19
        statusBarHeight: state.statusBarHeight,
        safeArea: state.safeArea,
DCloud-WZF's avatar
DCloud-WZF 已提交
20
        isCustomNavigationBar: false,
DCloud-WZF's avatar
DCloud-WZF 已提交
21
        devicePixelRatio: state.devicePixelRatio,
22 23 24
        webviewStyles: {
          progress: false
        }
25 26 27
      }
    },
    onReady() {
28
      this.webviewContext = uni.createWebviewContext('webview-screenshot-comparison', this)
29 30
    },
    methods: {
DCloud-WZF's avatar
DCloud-WZF 已提交
31
      customNavigationBarPageAppendWebHeadPlaceholder() {
雪洛's avatar
雪洛 已提交
32
        if (this.src.indexOf('pages/template/navbar-lite/navbar-lite') > -1) {
DCloud-WZF's avatar
DCloud-WZF 已提交
33
          this.webviewContext?.evalJS(`
DCloud-WZF's avatar
DCloud-WZF 已提交
34
            const uniNavbar = document.querySelector('.uni-navbar');
35
            uniNavbar.style.paddingTop = '${state.statusBarHeight}px';
DCloud-WZF's avatar
DCloud-WZF 已提交
36
          `)
雪洛's avatar
雪洛 已提交
37
        } else if (this.src.indexOf('pages/template/scroll-fold-nav/scroll-fold-nav') > -1) {
DCloud-WZF's avatar
DCloud-WZF 已提交
38
          this.webviewContext?.evalJS(`
DCloud-WZF's avatar
DCloud-WZF 已提交
39 40 41 42 43 44
        const heightSeat = document.querySelector('.height-seat');
        heightSeat.style.height = '125px';
        heightSeat.style.backgroundColor = '#f0f8ff';
        const topBox = document.querySelector('.top-box');
        topBox.style.top = '35px';
      `)
DCloud-WZF's avatar
DCloud-WZF 已提交
45
        }
46 47 48
      },
      loaded() {
        this.isLoaded = true
DCloud-WZF's avatar
DCloud-WZF 已提交
49
        this.customNavigationBarPageAppendWebHeadPlaceholder();
50 51 52 53 54 55 56
      },
      error(event : WebViewErrorEvent) {
        console.log('webview load error', JSON.stringify(event.detail));
      }
    }
  }
</script>
57 58 59 60 61
<style>
  .top-placehoder{
    height: var(--status-bar-height);
    background-color: #007aff;
  }
62
  .webview-screenshot-comparison {
63 64 65
    flex: 1;
  }
</style>