mobileScreen.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /* 移动端预览的时候 监听按键事件 传给学生端控制操作按钮 */
  2. import { onMounted, onUnmounted } from "vue"
  3. export const changeToggeMes = () => {
  4. function handleMessage(event: any) {
  5. // 当这个页面不是 iframe包裹的时候 会循环触发headerTogge 因为window.parent === window 相等 所以排除掉这个
  6. if (window.parent === window) {
  7. return
  8. }
  9. const { api, playState } = event.data || {}
  10. if (api === "headerTogge") {
  11. window.parent.postMessage(
  12. {
  13. api: "headerTogge",
  14. playState: playState
  15. },
  16. "*"
  17. )
  18. } else if (api === "changeTogge") {
  19. // 云教练切换
  20. window.parent.postMessage(
  21. {
  22. api: "changeTogge"
  23. },
  24. "*"
  25. )
  26. } else if (["clickTempo", "clickViewFigner"].includes(api)) {
  27. // 节奏练习 听音练习 切换
  28. window.parent.postMessage(
  29. {
  30. api
  31. },
  32. "*"
  33. )
  34. }
  35. }
  36. onMounted(() => {
  37. window.addEventListener("message", handleMessage)
  38. })
  39. onUnmounted(() => {
  40. window.removeEventListener("message", handleMessage)
  41. })
  42. }