【第三方MN插件】#Ver.0.1# ReResearch——自动在外部浏览器搜索选中内容

简介

插件开启之后,在文档中选中文字会自动打开外部浏览器搜索。

目前只支持文档选中搜索,不支持笔记、标注、脑图等。

下面分别提供了搜索引擎为Google、百度或者欧路词典app的版本供下载。也可按需要将main.js里的baseUrl自行修改为其他网站(需要网址)或者App(需要app的URL Scheme),可参考现有“研究”功能的自定义url。
自定义方法请看这一楼

请注意及时关闭插件,否则选中一次就会打开一次浏览器,你会疯的。

插件下载

Google搜索引擎
reresearch_Google_0.1.mnaddon (5.8 KB)

墙内可用Baidu搜索引擎
reresearch_Baidu_0.1.mnaddon (5.8 KB)

其实最有启发性的是这个:自动欧路词典app内搜索
reresearch_Eudic_0.1.mnaddon (5.8 KB)

自动在德语助手app内搜索
reresearch_Eudic_0.1.mnaddon (5.8 KB)

以上插件不可共用。使用前请打开“允许加载未认证插件”

动机

起因是看到了 Xiamumu这个帖子 ,聊这个我就不困了。

点击文档内的超链接一直都会在“研究”窗口打开,需要再多按一次才能打开Safari,很不方便。

开放插件功能后其实我有在尝试做一个超链接直接用外部浏览器打开的小插件。但是由于以下原因搁置了:

1)没有开发文档,不知道MN内响应打开链接的是哪个通知;

2)即使有开发文档,即使我可以直接用外部浏览器打开链接,但是并不能禁用原本在MN内浏览器打开网页这个默认操作(我猜的,在初期给插件这么嚣张的权限肯定不合适)。

看到上文帖子里的需求正好跟我之前的尝试有重叠,所以就先做了。跟之前的InstantCopy一样,依然是代码上很简单的小插件。

为什么叫ReResearch

其实这个插件的功能跟MarginNote自带的“Research”功能非常相似,所以开玩笑叫ReResearch。
只有两个区别:
1)网页是在外部(浏览器或者app)打开的;
2)支持其他App的URL Scheme.

其实最合理的做法是未来开发组在MarginNote的“研究”功能多加一个允许默认外部打开的设置。

为什么不支持脑图、摘要、笔记?

很惭愧,因为主要把MN当成带翻译功能的pdf阅读器在用,很少用到脑图、笔记等功能,所以其实我分不清什么是笔记什么是摘要什么是标题什么是注释什么是卡片,更不用说开发了。

但是有了这个简单的版本做参考,支持其他模式也很容易,欢迎随意修改。

不足

开发文档其实还没开发,只能基于官方插件摸索,这个插件现在还很不灵活。

一方面特别暴力,选中任何文字都会直接打开浏览器搜索。其实很有必要加一些前提条件,比如最简单的颜色判断,但是现在颜色是哪个属性值都还未知。
我最希望是的开放摘录弹出菜单的部分权限,这样可以主动选择是否打开外部浏览器,而且操作跟选颜色一样简单。

另一方面,要修改搜索引擎/URL Scheme只能在代码里修改baseUrl变量。理想/成熟状况下插件应该有自己的偏好设置界面。目前还不知道是否会有插件偏好设置或者如何设置。软件的设置界面已经很丰富了,插件设置也塞进去将会很可怕。
我建议可以考虑给插件唯一的那个按钮实现短按激活、长按设置。当然我就这么一说。

开发问题

现在用的还是旧的openURL方法,该方法已被废弃,新方法为openURL:options:completionHandler:。主要问题是不知道如何使用JSB调用这个方法,只能等有时间再研究了。很可惜我对iOS开发的认知还停留在iOS7时代。

9赞

感谢分享,期待有大神能把脑图,摘录加进来

2赞

感谢大神,欧陆词典搜索太:accept:

1赞

您好,请问如果要指定打开某个软件,用什么软件打开您的插件代码修改app url,非常感谢:pray:

1赞

任何代码编辑器都行。不知道你是什么操作系统,所以推荐Visual Studio Code或者Sublime Text,这两个都是跨系统的。
之前帖子里的插件有一个不影响使用的小瑕疵,我刚更新上面的下载文件,麻烦重新下载一下。
把mnaddon后缀改成.zip解压,用任意代码编辑器打开main.js,修改第七行的baseUrl为你需要的app url。
完成后再压缩成.zip,并修改后缀名为.mnaddon。
注意,一定要在项目根目录下打包
重新安装前需要先删除MN里的这个插件,重启MN后安装新插件。


打包方式在55秒以后
2赞

谢谢 好人一生平安:pray:

1赞

基于大神代码改了一下base url,可以根据选中内容搜索devonthink3中的资料。
DT_ReResearch.mnaddon (6.5 KB)

5赞

你好,百度的可以用,欧陆的用不了,iPados13.4,marginnote也是最新的。

看下楼上的方法,改下就可以用了

楼主大神,你实现了我的梦想,让MN随意呼唤URL-Scheme。配合APP之间的Drag n Drop,MN作为笔记本和第三方APP黏合成一个整体,实现了数据互通

(本来让客串的技术员准备做的,你真快 :+1: :+1: :+1:

1赞

抱歉,是我传错文件了 :sweat_smile:。现在帖子里的文件正常了。

1赞

蹩脚代码外行看不出来,大佬你就别跟着叫大神了 :joy:
不过还有个问题就是现在用的还是老的openURL,我试过新的openURL:options:completionHandler:没成功,主要原因是不知道在JSB里NSDictionary和nil该怎么表示。
NSString的处理一开始也遇到问题,后来发现JSB好像只能用js的字符串,算是解决了。
我想确认一下,你们用的是这个技术吗:GitHub - kishikawakatsumi/JavaScriptBridge: Write iOS apps in Javascript! JavaScriptBridge provides the way to write iOS apps with JavaScript. Powered by JavaScriptCore.framework.

我帮你问问,你别急

谢谢各位大神,我弄好了,谢谢!哈哈:smile:

感谢,弄好了,厉害呀

1赞

受@panmiqi 的这个帖子启发,做了一个好玩的尝试:用这个插件打开iOS的“捷径”app,MacOS现在还没有Shortcuts app,所以不要在Mac上尝试(我没有试,也不知道会有什么后果)。
因为捷径的名字是hardcoded,所以首先需要下载这个捷径并安装。安装之前需要去iOS系统设置-捷径app的设置里打开安装允许未认证捷径(熟悉的操作)。
然后安装这个插件后就可以激活捷径来共享剪贴板的内容。

插件下载

reresearch_shortcuts_0.1.mnaddon (5.9 KB)

5赞

太厉害了!谢谢
@merlinz165

如果更换软件url之后,.选中关键字是不是默认利用软件的搜索栏(输入栏)打开?需不需要特别设置其他的,比如说剪切板自动识别。

选中关键字是不是默认利用软件的搜索栏(输入栏)打开?

插件只负责打开链接,之后的行为于那个软件自己的功能(毕竟不是所有软件都有搜索栏),以及具体用的哪个URL Scheme(比如欧路词典其实提供了好几个URL Schem,只是例子里我用了查词的那个)

需不需要特别设置其他的,比如说剪切板自动识别。

这个插件不需要。还是以欧路词典为例,欧路提供了好几种机制来实现跨软件取词,这个插件用的是URL Scheme查词这个机制,跟剪贴板无关。
“自动查询剪贴板单词”是另一种机制,有另一个插件InstantCopy V0.1或者InstantCopy的强化版 by xy(支持复制卡片和摘录内容)可以用这种机制查词。这种情况下就需要打开软件的剪切板自动识别了。

我个人其实喜欢自动查询剪贴板单词,因为这样不需要修改这个插件的内容。