123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /**
- opt:{
- name: "窗口名称",
- src: "logo,
- url: "打开的窗口地址"
- }*
- */
- let subjectArr = []
- function openCard(opt) {
- sendMessage('openCard', opt)
- }
- //向书签发送事件消息
- function emitter_emit(event, data) {
- sendMessage(event, data)
- }
- //监听书签发送的事件消息
- function emitter_on(event, callback) {
- subjectArr.push({
- subject: event,
- callback: callback,
- subjectType: 'on'
- })
- }
- //取消监听书签发送的事件消息
- function emitter_off(event, callback) {
- subjectArr.forEach((item, index) => {
- if (item === event && callback === item.callback) {
- subjectArr.splice(index, 1)
- }
- })
- }
- function emitter_once(event, callback) {
- subjectArr.push({
- subject: event,
- callback: callback,
- subjectType: 'once'
- })
- }
- const sendMessage = (subject, message) => {
- let dt = {
- type: 'emitter',
- message: message,
- subject: subject,
- }
- window.parent.postMessage(JSON.stringify(dt), '*')
- }
- window.addEventListener("message", (event) => {
- try {
- const data = JSON.parse(event.data);
- const {type = null, subject = null, message = ''} = data;
- if (type === 'emitter') {
- subjectArr.forEach(item => {
- if (item.subject === subject) {
- if (item.callback) {
- item.callback(message)
- }
- if (item.subjectType === 'once') {
- emitter_once(item.subject, item.callback)
- }
- }
- })
- }
- } catch (e) {
- }
- })
- window.addEventListener("load", () => {
- document.body.oncontextmenu = function (event) {
- const {x, y} = event
- emitter_emit("cardMouseRight", {
- left: x,
- top: y,
- data: {
- id: window.name
- }
- });
- return false;
- }
- document.body.addEventListener('mousedown', () => {
- emitter_emit('deskTopMouseClose')
- emitter_emit('mouseMenuClose')
- })
- })
|