javascript:(function(){
/* 1. 通知許可をリクエスト */
if (Notification.permission !== "granted") Notification.requestPermission();
const selection = window.getSelection();
if (selection.toString().trim() === "") return alert("範囲を選択してください");
let targetElement = selection.getRangeAt(0).commonAncestorContainer;
if (targetElement.nodeType === 3) targetElement = targetElement.parentNode;
const initialText = targetElement.innerText;
/* 音を鳴らす関数 */
const ringAlarm = () => {
const audioCtx = new (window.AudioContext || window.webkitAudioContext)();
const osc = audioCtx.createOscillator();
osc.connect(audioCtx.destination);
osc.start();
osc.stop(audioCtx.currentTime + 0.5); /* 0.5秒鳴らす */
};
setInterval(() => {
if (targetElement.innerText !== initialText) {
/* デスクトップ通知 */
new Notification("更新検知!", { body: "選択範囲が変化しました" });
/* 音を鳴らす */
ringAlarm();
/* アラート(タブを切り替えた時に表示される) */
alert("更新されました!");
location.reload();
}
}, 3000);
alert("監視中... このまま別タブへ行ってもOKです(音と通知で知らせます)");
})();