ふぁメモ

主に技術系のメモをしたいけどやっぱり適当日記。たまにPHPコード載ってるけどメモ書き程度のスクリプトなのでそのまま使っちゃダメ。

2022年11月以降のSave Page WEで保存したWebページのスクリプト動作を復活させる

Save Page WEとは

Webサイトを単一HTMLで保存するChrome拡張である。 画像やCSS/JSなどの外部リソースをDataURI型式でHTMLに内包させ単一のHTMLファイルで管理できるので取り扱いが容易である。

以前はUnMhtなどでMHTML(RFC822)型式で単一ファイル化していたがブラウザがサポートしなくなってしまったりブラウザ拡張がWebExtensionに移行した関係で使えなくなったので移行した。

Save Page WE - Chrome ウェブストア

2022/11/14のUPDATE

CHANGES

Version 32.0

• Improves the way that resoucres are fetched.
• Removes the 'Allow scripts to execute' option.
• Minor bug fix.

以前は「Allow scripts to execute」をチェックかつ保存対象をCustomにしてスクリプトを保存するようにしてればJavaScriptもそのまま動いたのだが、セキュリティを鑑みたのか何なのかオプションが消されてしまった。

おかげで保存すると動かなくなるファイルが生成されて使い勝手が悪い。

印刷用ページを保存すると自動的に印刷ダイアログが起動したりするのでJSが消えるBasicとJSが消えないCustomと使い分けたりしていたのだが、一括で動かなくなってしまい魅力半減である。

サポートページにもなぜ消えたのかという質問が挙がっているが返答はない。

直し方

修正前後の生成ファイルを比較すると単にSCRIPTタグに type="text/plain" を追加することでスクリプトを動作しないようにしているようだ。 正確には typedata-savepage-typeに置き替えた上で type="text/plain" を追加しているようだ。 テキストエディタ<script 等で検索してここを戻してやれば再びスクリプトは動くようになる。

なお画像などが埋め込まれている都合ファイルはテキストベースとはいえかなり巨大なものになっているためそれなりに強いテキストエディタを使う必要があると思われる点は注意されたい。

追記

12月末のアップデートでSAME ORIGINのみスクリプト実行許可が追加された。