# csa **Repository Path**: lesterchn/csa ## Basic Information - **Project Name**: csa - **Description**: Cross site accessor Cross domain accessor - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-12-04 - **Last Updated**: 2022-12-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CsaAccessor iFrame/Frame 跨站/跨域访问器 ## 初始化 ```sh yarn add @lesterchn/csa npm i @lesterchn/csa yarn add @lesterchn/csa ``` ## 创建主站访问器 ```ts import { createMasterAccessor } from "@lesterchn/csa"; const master = createMasterAccessor({ el: "#frame" }); // 导出从站调用的方法 master.expose = { getMaster() { return `invoke getMaster`; }, sayMaster(name: string) { return `master: ${name}`; }, }; // 连接成功后 master.ready(() => { console.log("slave 已准备好了"); // 调用方法1 console.log("调用getFrame返回值:", frame.call("getFrame")); // 调用方法2,并携带参数 console.log("调用sayFrame返回值:", frame.call("sayFrame", "我是Master")); // 发送/推送普通消息 frame.emit("frame:xxx", new Date().toLocaleDateString()); }); // 监听消息 master.on('master:xxx', (message: string) { console.log(message); }); /** 监听一次性消息 */ master.on('master:xxx2', (message: string, args2: string) { /// todo }, true) ``` ## 创建从站访问器 ```ts import { createMasterAccessor } from "@lesterchn/csa"; const frame = createFrameAccessor(); // 到处主站调用的方法 frame.expose = { getFrame() { return `getSlave invoke`; }, sayFrame(name: string) { return `frame: ${name}`; }, }; // 连接主站成功后回调 frame.ready(() => { console.log("slave 已准备好了"); // 调用主站方法1 console.log("调用getMaster返回值:", frame.call("getMaster")); // 调用主站方法2,并携带参数 console.log("调用sayMaster返回值:", frame.call("sayMaster", "我是Frame")); // 发送/推送普通消息 frame.emit("frame:xxx", new Date().toLocaleDateString()); }); // 监听消息 frame.on('frame:xxx', (message: string) { console.log(message); }); /** 监听一次性消息 */ frame.on('frame:xxx2', (message: string, args2: string) { /// todo }, true) ``` ### 浏览器引用 ```html ```