Greasy Fork

Greasy Fork is available in English.

PPT预览自动切换

zh-CN PPT预览自动切换,触发鼠标点击事件,自动翻页

当前为 2021-08-27 提交的版本,查看 最新版本

// ==UserScript==
// @name         PPT预览自动切换
// @namespace    http://tampermonkey.net/
// @version      0.4
// @description: PPT预览自动切换,触发鼠标点击事件,自动翻页
// @author       黄种鑫
// @match        *://*.officeapps.live.com/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// @description zh-CN PPT预览自动切换,触发鼠标点击事件,自动翻页
// ==/UserScript==

(function () {
  'use strict';

  console.log('aaa' + (+new Date()))
  console.log('location.ancestorOrigins.length', location.ancestorOrigins.length)
  if (location.ancestorOrigins.length === 1) {
    console.log('bbb' + (+new Date()))
    console.log('我是父页面')
    window.addEventListener('message', (e) => {
      console.log(e.data)
      // 母页面处理
      if (e.origin.includes('officeapps.live.com')) { // 子页面传过来的消息,转发到外部去
        console.log('父页面收到来自子页面的消息')
        top.postMessage(e.data, '*')
      } else { // 外部来的消息,转发到子页面去
        console.log('父页面收到财涛的消息')
        document.querySelector('#wacframe').contentWindow.postMessage(e.data, '*')
      }
    })

    return
  }

  console.log('ccc' + (+new Date()))
  console.log('我是子页面')
  window.addEventListener('message', (e) => {
    console.log('ddd' + (+new Date()))
    console.log(e.data)
    // 子页面处理
    if (e.data === 'init') {
      // 触发聚焦???
      document.querySelector('#SlidePanel').click()
      var curPage = +(document.querySelector('#SlideLabel-Medium14').innerText.match(/\d+/)[0] || 1)
      console.log('curPage', curPage)
      for (var i = 0; i < 100; i++) {
        document.dispatchEvent(new KeyboardEvent('keydown', { keyCode: 33 }))
      }
      top.postMessage({
        eventName: 'inited'
      }, '*')
    } else if (e.data === 'click') {
      document.querySelector('#SlidePanel').click()
    }
  })

  var timer = setInterval(() => {
    if (document.querySelector('#SlidePanel #scc')) {
      console.log('ppt 初始化成功')
      console.log('eee' + (+new Date()))
      top.postMessage({
        eventName: 'loaded'
      }, '*')
      clearInterval(timer)
    }
  }, 10)
})();