6 changed files with 101 additions and 35 deletions
@ -0,0 +1,19 @@ |
|||
<template> |
|||
<transition-group name="fade-transform" mode="out-in"> |
|||
<inner-link |
|||
v-for="(item, index) in tagsViewStore.iframeViews" |
|||
:key="item.path" |
|||
:iframeId="'iframe' + index" |
|||
v-show="route.path === item.path" |
|||
:src="item.meta.link" |
|||
></inner-link> |
|||
</transition-group> |
|||
</template> |
|||
|
|||
<script setup> |
|||
import InnerLink from "../InnerLink/index" |
|||
import useTagsViewStore from '@/store/modules/tagsView' |
|||
|
|||
const route = useRoute(); |
|||
const tagsViewStore = useTagsViewStore() |
|||
</script> |
|||
@ -1,30 +1,43 @@ |
|||
<script> |
|||
export default { |
|||
setup() { |
|||
const route = useRoute(); |
|||
const link = route.meta.link; |
|||
if (link === "") { |
|||
return "404"; |
|||
} |
|||
let url = link; |
|||
const height = document.documentElement.clientHeight - 94.5 + "px"; |
|||
const style = { height: height }; |
|||
<template> |
|||
<div :style="'height:' + height" v-loading="loading" element-loading-text="正在加载页面,请稍候!"> |
|||
<iframe |
|||
:id="iframeId" |
|||
style="width: 100%; height: 100%" |
|||
:src="src" |
|||
frameborder="no" |
|||
></iframe> |
|||
</div> |
|||
</template> |
|||
|
|||
// 返回渲染函数 |
|||
return () => |
|||
h( |
|||
"div", |
|||
{ |
|||
style: style, |
|||
}, |
|||
h("iframe", { |
|||
src: url, |
|||
frameborder: "no", |
|||
width: "100%", |
|||
height: "100%", |
|||
scrolling: "auto", |
|||
}) |
|||
); |
|||
<script setup> |
|||
const props = defineProps({ |
|||
src: { |
|||
type: String, |
|||
default: "/" |
|||
}, |
|||
iframeId: { |
|||
type: String |
|||
} |
|||
}); |
|||
|
|||
const height = ref(document.documentElement.clientHeight - 94.5 + "px"); |
|||
const loading = ref(false); |
|||
|
|||
onMounted(() => { |
|||
const { proxy } = getCurrentInstance() |
|||
const iframeId = ("#" + props.iframeId).replace(/\//g, "\\/"); |
|||
const iframe = document.querySelector(iframeId); |
|||
// iframe页面loading控制 |
|||
if (iframe.attachEvent) { |
|||
loading.value = true; |
|||
iframe.attachEvent("onload", function () { |
|||
proxy.loading = false; |
|||
}); |
|||
} else { |
|||
loading.value = true; |
|||
iframe.onload = function () { |
|||
proxy.loading = false; |
|||
}; |
|||
} |
|||
}) |
|||
</script> |
|||
|
|||
Loading…
Reference in new issue