我在我的Vue文件中嵌入了这个pdf,但我想从我定义html表的div中获取内容:
<template>
<div id="editor"> HTML TABLE HERE </div>
<iframe :src="iframe.src" type="application/pdf" width="100%"
height="650" frameborder="0" style="position:relative;z
index:999" ref="frame" @load="load" v-show="iframe.loaded">
</iframe>
</template>
<script>
export default {
data() {
return {
iframe: {
src: '', //DIV HERE #EDITOR
loaded: false
}
}
},
methods: {
load: function(){
this.iframe.loaded = true;
}
}
}
</script>
这可能吗?
答案 0 :(得分:3)
有可能! iframe的src
属性会获取一个URL地址,并会尝试加载整个页面。因此,不要试图将任何类型的引用传递给编辑器div,而是通过window.location.href
将其传递给当前URL。
然后,通过在编辑器div上设置ref
属性,您可以在mounted
生命周期钩子中引用它并获取它的位置和尺寸。一旦你有了这个,你就可以设置iframe和一个包装div的样式,只显示`editor。
这是整个事情(和codepen):
<template>
<div id="app">
<div id="editor" ref="editor">HTML TABLE HERE</div>
<div
id="iframe-wrapper"
:style="iframe.wrapperStyle"
>
<iframe
v-if="loaded"
:src="iframe.src"
:style="iframe.style"
:height="iframe.style.height"
:width="iframe.style.width"
type="application/pdf"
frameborder="0"
></iframe>
</div>
</div>
</template>
<script>
export default {
data() {
return {
loaded: false,
iframe: {
src: window.location.href,
style: null,
wrapperStyle: null,
}
}
},
mounted() {
let editor = this.$refs.editor;
this.iframe.style = {
position: 'absolute',
width: window.innerWidth,
height: window.innerHeight,
top: -editor.offsetTop + "px",
left: -editor.offsetLeft + "px",
}
this.iframe.wrapperStyle = {
overflow: 'hidden',
height: editor.clientHeight + "px",
width: editor.clientWidth + "px",
}
this.loaded = true;
}
}
</script>