見出し画像

【Anki】カードにSkeLLを表示させようと思ったら躓いた話

僕は日頃からAnkiにお世話になっています。もうこれ無しじゃ英単語覚えられない。お陰様で学校の単語テストも全く苦じゃない。

さて、僕はテンプレートにガンガン手を入れて自分流のカードを作るのが好きなのですが、ある日SkeLL (優秀なコーパス) をiframeで表示させようと、

<iframe class="skell" width="100%" height="500" frameborder="0" 
src="https://skell.sketchengine.eu/#result?f=concordance&lang=en&query={{query}}">
</iframe>

というコードを裏のテンプレートに挿入したわけですね。

しかし何故か表示がバグっている!?!? 完全にアクセス拒否されたわけじゃないからX_Frame_OptionsがDENY/SAMEORIGINって訳じゃないし、Chromeで同じコードを動かしてみたら普通に動くから脳内???でした。

別にSkeLLじゃなくてCOCAでも良いかなーって思ってCOCAで実装しようと思ったら、URLでqueryの指定できないじゃん!!ってなったので諦めてSkeLLと戦うことに。

そこでRedditで質問してみたところ(何気にReddit初体験)、--disable-web-securityを追加してAnkiを起動してみたらどうか、というコメントが返ってきたが、CORSの問題ではなかったので解決せず。

そしたら素敵なアドオンを紹介してくれて、それで調査してみたところ原因は↓

Uncaught DOMException: Failed to read the 'localStorage' property from 'Window': Access is denied for this document.

なるほどCookieを読み込めてなかったのか。
ということでCookie Monsterをインストールして一件落着。

と思ったらAnkidroidでCookie読んでくれない。
仕方ないのでAndroidではDictionary.comのExamplesにお世話になることにしました。このサイトはしっかりExamplesのアンカー (#examples-section) があるから便利。他のサイトは大体X_Frame_Options入ってたので断念。

ここまでの一連の流れで丸3日持ってかれました。おかげで600個くらい期日カード溜まったわ。

結論: Redditは便利。期日カードは毎日こなさないとすぐ溜まるからやる。


この記事が気に入ったらサポートをしてみませんか?