<template> <div class="pl-tabs-panel" :title="title" v-show="active" > <div class="pl-loading pl-loading-fixed" v-show="url&&!loaded" ref="dom-loader"> <span></span> <span></span> <span></span> <span></span> <span></span> </div> <iframe v-if="!hasUrl" :src="url" @load="handleIframeLoad" :name="'iframe'+name" ref="iframe"></iframe> <slot v-if="hasUrl"></slot> </div> </template> <script> export default { name:'PTabpanel', props:{ close:[String,Number,Boolean], itemData:Object, title:{ type:String, default:"" }, name:{ type:[String,Number], default:"" }, url:{ type:[String], default:"" }, index:[String,Number] }, data(){ debugger return { loaded: false, hasUrl:this.url==null||this.url=='' } }, computed:{ active(){ const active = this.$parent.currentName === this.name; return active; } }, updated() { this.$parent.$emit('tab-nav-update'); }, methods:{ handleIframeLoad(evt){ debugger let ifm = this.$refs['iframe']; if(ifm&&ifm.src!=="about:blank"){ this.loaded=true; }else{ if(ifm&&ifm.contentWindow.document.body.innerHTML==""){ this.loaded=false; }else{ this.loaded=true; } } this.loaded&&this.$emit('onIframeLoad',this,evt); } } } </script>