外部リンクのURLを差し替える機能
この機能は上級者向けです。 (Caution! This feature is only for experts.)
Scrapboxのページに貼り付けたScrapbox外へのリンク(タップするとSafariで開かれるもの)のURLを自由に加工し、差し替えて実行する機能です。 (This is the function to replace the URL of a link outside Scrapbox (opened in Safari when tapped) freely and execute it.)
外部リンクをタップした瞬間に発動します。
ページ上の文字列そのものを書き換えるわけではなく、実行するURLをすり替えるだけです。
この機能を利用すると次のようなことができます。
リンクをSafariではなくGoogle Chromeで開く
EvernoteのノートリンクをEvernoteアプリで開く
WorkFlowyのURLをHandyFlowyで開く
ニコニコ動画のURLをアプリで開く
リンクは開かず、全く別のことを行う
code:js
ORIGINAL_URL; // 元のURLが入った定数 (Constant containing the original URL)
// ここに ORIGINAL_URL を加工する処理を書く
// Some statement here
return "加工後のURL"; // Return URL you want to open.
実行したいURLの文字列をreturnすることで、URLの差し替えが実行されます。 (Replacement is being executed simply by returning the character string of the URL you want to open.)
code:js
↑ 例えばこのように書くと、タップした外部リンクの内容にかかわらず、常に、どうやっても、何が何でもGoogleのトップページが開くようになります。
いかなるURLも開かないようにするには
return;
return null;
return "";
returnしない
この4通りのいずれかでURLのopenを完全にキャンセルします
例1. リンクをGoogle Chromeで開く (Open link in Google Chrome)
code:js
var editedUrl = "googlechrome-x-callback://x-callback-url/open/?&url=";
editedUrl += encodeURIComponent(ORIGINAL_URL);
return editedUrl;
例2. Evernoteのノートリンクをアプリで開く (Open Evernote's note link in Evernote app)
(EvernoteのノートリンクがUniversal Linksになったので、このスクリプトを適用する必要はなくなりました)
code:js
var matched = ORIGINAL_URL.match(/^https:\/\/www\.evernote\.com\/shard\/(0-9a-z+?)\/a-z+?\/(\d+?)\/(0-9a-z\-+)/); if (matched) {
var editedUrl = "evernote:///view/" + matched2 + "/" + matched1 + "/" + matched3 + "/" + matched3; return editedUrl;
} else {
return ORIGINAL_URL;
}
補足事項 (Supplement)
記述したスクリプトは自動的に即時関数で包まれます (The written script is automatically wrapped in an anonymous function.)
↓ のスクリーンショットように即時関数の中に入れた記述にしてしまうとreturnする値まで閉じ込められますので、正常に動作しません (If it is written in the immediate function, it will not work properly.)
https://gyazo.com/efccff435783abc65e7e7e9879858f3e