外部リンクの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をアプリで開く
リンクは開かず、全く別のことを行う
URLの差し替え処理はJavaScriptで記述します。 (The URL replacement process is written in JavaScript.)
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
return "https://www.google.co.jp";
↑ 例えばこのように書くと、タップした外部リンクの内容にかかわらず、常に、どうやっても、何が何でも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
#URL差し替え機能向けJavaScript