Open northword opened 5 months ago
Zotero.openInViewer 可以传入一个 onLoad 回调,可以在这个回调里注册监听页面关闭事件。似乎这个方法本身就提供了很多钩子?
https://github.com/zotero/zotero/commit/0757109c16307076ab53372f506007c3f16b7a08
可以通过 onLoad 回调修改 document,
CC @jiaojiaodubai 我觉得方案3的可行性比较高。
我有空在 Jasminum 7 临时仓库 试验一下,待基本功能完善我会 transfer 给 @l0o0
debug with:
可能的方案:
以下方案大部分都需要一个组件用来与插件/ Zotero 交互,可能是打开链接,可能是剪贴板,可能是调用程序。
理想中,这个组件在 非 Zotero 打开时,应该隐藏,可以考虑通过 UA,使用 https://github.com/faisalman/ua-parser-js 解析 UA。
-> 不可行,Zotero 没有特殊UA。已证实不可行:Zotero 内置浏览器 UA 为
因此这个组件可以始终显示,但做好提示依赖 xx 插件。
方案1
网页提供不加 _target=black 的 csl 超链接,理想状态该链接被 Zotero 识别并安装。
-> 不可行,Zotero 会把所有链接都打开到浏览器,包括 zotero.org/styles 也是,可能是bug,也可能是新的安装途径。
方案2
组件提供一个复制链接的按钮,
插件打开页面时监听剪贴板,直到特殊格式的字符串出现(用户点击按钮),获取到URL,调用 Zotero.Styles.install。页面关闭时停止监听剪贴板。
方案3
组件提供一个按钮,用来拉起 protocol,例如 zotero://jasminum/install-style=url
插件方注册这个protocol,解析出 url,并调用相关方法从 url 安装样式。
安装 csl 方法:
注册 protocol 可以参考:https://github.com/windingwind/zotero-plugin-toolkit/blob/master/src/utils/pluginBridge.ts