{"_id":"@cicctencent/postmessage-channel","name":"@cicctencent/postmessage-channel","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@cicctencent/postmessage-channel","version":"1.0.0","description":"postMessage duplex communication","keywords":[],"main":"dist/index.js","typings":"dist/index.d.ts","author":{"name":"liquidliang","email":"ljquan@qq.com"},"repository":{"type":"git","url":""},"license":"Apache-2.0","engines":{"node":">=6.0.0"},"scripts":{"prebuild":"rimraf dist","prepublish":"npm run build","dev":"cliserver serve . -l","test":"jest","tw":"jest --watch","build":"tsc --module commonjs && rollup --config ./build/rollup.config.bundle.js","docs:dev":"vuepress dev docs","docs:build":"vuepress build docs","pub-beta":"npm publish --tag beta"},"jest":{"transform":{".(ts|tsx)":"ts-jest"},"testEnvironment":"jsdom","testRegex":"(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$","moduleFileExtensions":["ts","tsx","js"],"coveragePathIgnorePatterns":["/node_modules/","/test/"],"coverageThreshold":{"global":{"branches":90,"functions":95,"lines":95,"statements":95},"src/processor.ts":{"functions":80}},"collectCoverageFrom":["src/*.{js,ts}"]},"devDependencies":{"@jest/types":"^28.1.1","@lencse/cliserver":"^0.1.2","@rollup/plugin-node-resolve":"^13.1.3","@rollup/plugin-replace":"^4.0.0","@vue/shared":"^3.2.33","jest":"^28.1.1","rimraf":"^2.6.2","rollup":"^2.70.1","rollup-plugin-strip-banner":"^2.0.0","rollup-plugin-terser":"^7.0.2","rollup-plugin-typescript2":"^0.31.2","ts-jest":"^28.0.5","tslib":"^2.4.0","typescript":"^4.6.4"},"dependencies":{},"_id":"@cicctencent/postmessage-channel@1.0.0","gitHead":"4325abc413a9c7675fe4d6cf705d4a3b8c0295fd","_nodeVersion":"22.15.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-YjQvsOoLNrwtbvaR4aeHihwZFMdR8q3iKSrQ18nPmie9l/3q/TDJ/BnHZWv59ZgSA7juLToaIeJNb3Qinkx6eQ==","shasum":"226fa4179992a5f78dd627a7a03a497b9b418b44","tarball":"https://registry.npmjs.org/@cicctencent/postmessage-channel/-/postmessage-channel-1.0.0.tgz","fileCount":16,"unpackedSize":39788,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDgYLQFnwoCXCbHCIvZcE3Z2tPLFp5rSa6YtD9HZtq+lQIhAKEm/8/IxP/LLPa0MEVwhZZ3iFExfQ9vnNg6C4tgjBfH"}]},"_npmUser":{"name":"jiamao","email":"haofefe@163.com","actor":{"name":"jiamao","email":"haofefe@163.com","type":"user"}},"directories":{},"maintainers":[{"name":"jiamao","email":"haofefe@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/postmessage-channel_1.0.0_1750665432413_0.5185045285229666"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-23T07:57:12.324Z","1.0.0":"2025-06-23T07:57:12.615Z","modified":"2025-06-23T07:57:12.930Z"},"maintainers":[{"name":"jiamao","email":"haofefe@163.com"}],"description":"postMessage duplex communication","keywords":[],"repository":{"type":"git","url":""},"author":{"name":"liquidliang","email":"ljquan@qq.com"},"license":"Apache-2.0","readme":"# postmessage-channel\r\npostmessage双工通讯组件\r\n\r\n\r\n## 使用\r\n`npm run dev`\r\n打开页面：http://localhost:7100/\r\n使用手册：http://127.0.0.1:7100/docs\r\n\r\n可以参考以下demo的实现\r\nindex.html   父窗口\r\nson.html     子窗口\r\n\r\n\r\n### 具体代码参考（Vue3）\r\n\r\n父窗口\r\n```js\r\nimport PostMessage from '@jv/postmessage-channel'\r\nimport {ref,onMounted}from 'vue';\r\n\r\nconst iframe=ref(null)\r\nlet ps\r\n\r\nfunction handleClick() {\r\n    ps.publish('$router.push', { path: '/approve' })\r\n}\r\n\r\nonMounted(()=>{\r\n    ps = new PostMessage(iframe.value);\r\n})\r\n\r\n```\r\n```html\r\n<template>\r\n    <div @click=\"handleClick\">示例1</div>\r\n    <div> <iframe ref='iframe' src=\"http://localhost:8089\" frameborder=\"0\" width=\"100%\" style='height:100vh;'></iframe> </div>\r\n</template>\r\n```\r\n\r\n子窗口\r\n```js\r\nimport { getCurrentInstance,provide } from 'vue';\r\nimport PostMessage from '@jv/postmessage-channel'\r\n\r\nexport default ()=> {\r\n    const {proxy:ctx}=getCurrentInstance()\r\n    let ps = null;\r\n    if (window.frames.length !== window.parent.frames.length) {\r\n        console.log('测试是否是iframe');\r\n        try {\r\n            //获取父级页面\r\n            const referrer = document.referrer\r\n            ps = new PostMessage(referrer);\r\n            //提供\r\n            provide('PostMessage', ps)\r\n            ps.subscribe('$router.push', ({ data }) => {\r\n                ctx.$router.push(data);\r\n                return {\r\n                    code: 200,\r\n                };\r\n            });\r\n        } catch (e) {\r\n            console.error(`PostMessage:${e}`);\r\n        }\r\n    }\r\n    //向子组件注入ps\r\n    provide('PostMessage', ps)\r\n}\r\n\r\n```","readmeFilename":"README.md","_rev":"1-c33698b20243b137ba35c6d6ad1fcf4e"}