Site cover image

📘 astro-notion-blog

### DEPRICATED ### yumenomatayume の個人ブログ(Beta)です。 個人ブログに移行する

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 の適当なページを開いて、 にたどり着けました。一安心☺️


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