𝕏📘📖☁️

Cosense の UserScript を変更したら全ページが応答しなくなった 😱

きっかけは ChatGPT だった。。😅

Cosense でもダークテーマを使いたいと思って、以下の UserScript を利用していました 🌙

document.documentElement.dataset.projectTheme = "default"
  const observer = new MutationObserver(() => {
        document.documentElement.dataset.projectTheme = "default-dark"
  });
observer.observe(document.documentElement, {attribute: true, subtree: true, childList: true})

このスクリプトでは常にダークテーマが適用されてしまうため、時間帯によって切り替えられるようにしたいと考えました。

以下のような Userscript を使ってダークテーマを利用しています。

document.documentElement.dataset.projectTheme = "default"
 const observer = new MutationObserver(() => {
        document.documentElement.dataset.projectTheme = "default-dark"
 });
 observer.observe(document.documentElement, {attribute: true, subtree: true, childList: true})

これを時間帯ごとに変化させたいのですがどうすればいいですか?

この質問をしたところ、ChatGPT から以下のスクリプトを使うよう提案されました。

// ==UserScript==
// @name         Time-based Theme Switcher
// @match        *://*/*
// @grant        none
// ==/UserScript==

(function () {
  'use strict';

  // テーマを適用する関数
  function applyThemeByTime() {
    const hour = new Date().getHours();
    const isDarkTime = (hour >= 18 || hour < 6); // 18時〜翌6時はダーク

    document.documentElement.dataset.projectTheme = isDarkTime ? 'default-dark' : 'default';
  }

  // 最初にテーマを適用
  applyThemeByTime();

  // DOMが変更されたときに再適用(念のため)
  const observer = new MutationObserver(() => {
    applyThemeByTime();
  });
  observer.observe(document.documentElement, {
    attributes: true,
    childList: true,
    subtree: true
  });

  // 1分ごとに再評価(時をまたいでも切り替わるように)
  setInterval(applyThemeByTime, 60 * 1000);
})();

あまり JavaScript に詳しくないため無邪気にこれを設定すると、急に Cosense ページから応答がなくなりました。。。

元に戻そうにもそもそもアクセスができない時間が続き、、途方に暮れていました。

対処法

💡 他ユーザーの Cosense のページから、自身の User Settings に移動して User Script を無効化しました

もちろん自分のスペースだけに適用した User Script なので、他ユーザーのページは問題なく閲覧できます。

そのためブラウザで Cosense の適当なページを開いて、User Settings にたどり着けました。一安心☺️

どなたかダークテーマに詳しい方がいたら設定方法を教えてください。