Angel丶守护&雪之源 2023-03-21 15:18 采纳率: 22%
浏览 30
已结题

在VUE项目中两个不同的地方,怎么判断后面的地方记载完毕?

初次加载页面的时候头部优先加载完毕,body还没有加载完成,如何禁止头部的保存按钮的点击事件,等待整个页面加载完毕后才可以使用?
页面如下:

img

头部和身体是两个不同的文件生成的
头部代码如下:
template代码如下:

<div class="editor-header lay-fx lay-ai-c lay-jc-sb bd-b">
    <div>
        <ul class="lay-fx lay-ai-c">
            <li>
                <el-popover
                class="fn-csp"
                placement="bottom"
                width="350"
                trigger="click"
                v-model="hintState">
                    
                    <topbar-page-dropdown v-if="hintState"></topbar-page-dropdown>
                    <span slot="reference">
                        {{ $t('当前页面') }} 
                        {{ $store.getters['posts/current'].title }}
                        <i class="el-icon-arrow-down el-icon--right"></i>
                    </span>
                </el-popover>
            </li>
            <li>
                <Icon
                icon="dashicons-veditor-tj"
                class="fn-csp"
                size="22"
                :title="$t('添加组件')"
                @click="openComponentsPanel"></Icon>
            </li>
            <li>
                <Icon
                icon="dashicons-veditor-shangyibu"
                class="fn-csp"
                size="22"
                :title="$t('上一步')"
                :disable="!prevHistory.length"
                :loading="prevLoading"
                @click="changeHistoryPrev"></Icon>
            </li>
            <li>
                <Icon
                icon="dashicons-veditor-xiayibu"
                class="fn-csp"
                size="22"
                :title="$t('下一步')"
                :disable="!nextHistory.length"
                :loading="nextLoading"
                @click="changeHistoryNext"></Icon>
            </li>
            <li>
                <Icon
                icon="dashicons-veditor-baocun"
                class="fn-csp handle-save"
                size="22"
                :title="$t('保存')"
                ref="saveBTN"
                :loading="saveLoading"
                @click="save"></Icon>
            </li>
            <li v-show="postsType === 'page'">
                <Icon
                icon="dashicons-veditor-shezhi"
                class="fn-csp"
                size="22"
                :title="$t('全局设置')"
                @click="openSiteSettingPanel"></Icon>
            </li>
            <li v-if="YunEditor.debug || YunEditor.permission.includes('ms')">
                <Icon
                icon="dashicons-format-standard"
                class="fn-csp"
                size="22"
                :title="$t('素材')"
                @click="openMaterialPanel"></Icon>
            </li>
        </ul>
    </div>

    <div>
        <ul class="lay-fx lay-ai-c">
            <li>
                <i class="el-icon-turn-off f-s-22 fn-csp" 
                :title="$t('隐藏头部')" 
                @click="hideHeader"></i>
            </li>
            <li>
                <i
                :title="$t('隐藏编辑框')"
                class="el-icon-view f-s-22 fn-csp"
                @click="hideEditTool"></i>
            </li>
            <li v-if="YunEditor.language">
                <languages-select></languages-select>
            </li>
            <li>
                <window-size-select></window-size-select>
            </li>
            <li v-show="postsType === 'page'">
                <Icon
                icon="dashicons-welcome-view-site"
                class="fn-csp"
                size="22"
                :title="$t('查看页面')"
                @click="openPageView"></Icon>
            </li>
        </ul>
    </div>
</div>

js代码如下:

 mounted() {
        // 此处是我通过定时器延迟实现的,但不准确,有时候下方页面2秒内不一定能够加载完成
        // setTimeout(()=>{
        //     if(this.$refs.saveBTN !== undefined){
        //         this.$refs.saveBTN.$el.style['pointer-events'] = "none"
        //         this.$refs.saveBTN.$el.parentNode.style.cursor  = "not-allowed"
        //     }
        // },200)
        // setTimeout(() => {
        //     this.$nextTick(()=>{
        //         this.$refs.saveBTN.$el.style['pointer-events'] = "auto"
        //         this.$refs.saveBTN.$el.parentNode.style.cursor  = "pointer"
        //     })
        // }, 2000);
    },
  • 写回答

1条回答 默认 最新

  • 光吃,不胖 2023-03-22 09:51
    关注

    可以先把按钮禁用,然后使用window.onload事件,window.onload事件会在整个页面及所有资源都加载完成后触发

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月23日
  • 创建了问题 3月21日

悬赏问题

  • ¥20 python爬虫遇到空文本取不出来
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入