wente
2024-05-17 65a79e6ec47a067136f5e9297ca339e8c20747f1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<template>
  <div>
    <el-form :inline="true">
      <zt-form-item>
        <zt-button style="margin-left: 10px" @click="svgCanvas()">保存</zt-button>
      </zt-form-item>
    </el-form>
    <iframe src="/SVGOrigin/Method-Draw-master/editor/index.html" ref="myIframe" width="100%"
            style="height:calc(100vh - 125px)">
 
    </iframe>
  </div>
</template>
 
<script>
  // 监听iframe发送过来的消息
  window.addEventListener('message', (event) => {
    if (event.origin === "/SVGOrigin/Method-Draw-master/editor/index.html") { // 确保消息来源可靠
      console.log('Received message from iframe:', event.data);
    }
  })
    export default {
        name: "SVGEditor",
      data(){
          return {
 
        }
      },
      components:{
 
      },
      methods:{
        handleIframeMessage(event){
          // 从 iframe 接收到的数据
          const svgData = event.data;
 
          // 在这里处理接收到的数据
          console.log('svgData:', svgData);
        },
        svgCanvas(){
          const iframe = this.$refs.myIframe;
          const iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
          const iframeWindow = this.$refs.myIframe.contentWindow;
          // 获取 iframe 中 id 为 tool_save 的按钮元素
          const saveButton = iframeDocument.getElementById('tool_save');
          if (saveButton) {
            // 创建一个新的鼠标抬起事件(mouseup)
            const mouseUpEvent = new MouseEvent('mouseup', {
              bubbles: true,
              cancelable: true,
              view: window
            });
            // 监听鼠标抬起事件
            saveButton.addEventListener('mouseup', function(event) {
              console.log('Mouse Up Event Triggered');
             iframeWindow.postMessage('triggerEvent', '*')
              setTimeout(()=>{
                window.addEventListener('message', this.handleIframeMessage)
              },0)
 
            });
            // 触发鼠标抬起事件
            saveButton.dispatchEvent(mouseUpEvent);
          } else {
            console.log('Button not found in iframe');
          }
        }
      },
      mounted() {
        window.addEventListener('message', this.handleIframeMessage);
      },
      beforeDestroy() {
        window.removeEventListener('message', this.handleIframeMessage);
      },
    }
</script>
 
<style scoped>
 
</style>