在此输入 ClipSync 账号。默认会话保存在本机 Safari;不要把密码放进快捷指令 URL。
SafariPage;再添加「获取剪贴板」并用「设定变量」保存为 ClipText。ClipText;随后添加「获取变量」动作并选择 SafariPage。SafariPage。在下方脚本的 __CLIPSYNC_BASE64__ 处插入 Base64 动作的魔法变量。ok,用「如果」判断;成功显示「已上传」,失败显示键 error。上传脚本:在 __CLIPSYNC_BASE64__ 处插入 Base64 动作的魔法变量(不要手打变量名):
(async () => {
try {
if (!window.CS) throw new Error('Bridge 尚未加载');
const encoded = '__CLIPSYNC_BASE64__'.replace(/\s/g, '');
const binary = atob(encoded);
const bytes = Uint8Array.from(binary, c => c.charCodeAt(0));
const text = new TextDecoder().decode(bytes);
const result = await window.CS.runFromShortcut({
cmd: 'upload', kind: 'text', ttl: '86400', t: text
});
completion(result);
} catch (e) {
completion({ ok: false, error: String(e && e.message || e) });
}
})();
Base64 用来安全传递引号、换行、中文等内容,不要直接把剪贴板原文拼进 JavaScript 源码或 URL。
取回最新文本建立另一条快捷指令,按前述方法保留 SafariPage 并将其传给「在网页上运行 JavaScript」。脚本返回最近一条内容:
(async () => {
try {
if (!window.CS) throw new Error('Bridge 尚未加载');
completion(await window.CS.runFromShortcut({ cmd: 'fetch', n: '1' }));
} catch (e) {
completion({ ok: false, error: String(e && e.message || e) });
}
})();
JavaScript 后解析返回字典;判断 ok 为真且 kind 等于 text 时,取 text 并添加「复制到剪贴板」。n: '1' 是最新一条,改为 '2' 可取第二条。
从 Safari 当前 Bridge 页的分享表单启动。不要从任意 App 或主屏幕运行,也不要把 URL 文本当成「网页」输入。
等待指令…
等待指令…
・密钥派生与加解密全部在 Safari 内完成(WebCrypto)。 ・会话与解密密钥默认保存在此 Safari 网站的本机存储中。 ・共用设备使用后请点「清除本机登录缓存」。 ・不要把密码放进 URL;URL 的 # 片段虽不会发给服务器,仍可能留在 Safari 历史记录中。 ・「在网页上运行 JavaScript」仅在 Safari 当前网页的分享表单上下文中运行。