とりあえずのメモ
小説ページでは、表示エピが栞エピより後であれば、htmlコンテンツに次のタグが挿入される。
<input type="hidden" name="auto_siori" data-url="https://syosetu.com/favnovelmain/shioriupdateapi/" data-no="71" data-favno="70" data-primary="xxxxxxx_xxxxxx" data-token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx">
多分、primaryは小説のIDを含む値。tokenは毎回変わるかな。
このタグは2か所に挿入されている。
実際にこのタグを利用しているのは、novel_bookmarkmenu.jsの中。jQueryの$(function(){})の中で、auto_sioriが存在し、noがfavnoより後であればurlの内容にアクセスして、栞を更新している。知らなかったけれどw jQueryのdata関数は、parseしたものを返しているので、この場合にはちゃんとint型が返って通常比較でも問題が無い。文字列比較になるかと思った。なので、ここに配列やらオブジェクトやらを書いても動くらしい。でも最近はjQueryは流行りじゃないようだけれど。
さて、拡張機能のcontent_scriptsはrun_atをdocument_endに指定しておけば、html本体のonloadより優先して実行されるようだ。だから、auto_sioriが存在するかどうかを確認し、存在していてnoがfavno+1より大きければ、当該タグのnameを変更することで、前話1の自動栞更新を止めることが出来る。
これだけでも、ずいぶんと状況は改善されそうな気がする。
あとは、自動更新の遅延だけれど、Intersection Observer APIを使えば実現できるかも??
でも、モバイルのedgeで使う場合にはストアに正式に公開しないといけないんだろうなあ。
メモを追加。
作品のBMをして、個別EPのBMが入っていない状況では、data-favnoには0が入る。このため、個別BMが未設定の場合でも、アルゴリズムに修正を加える必要はなし。




