// content.js // Log that the content script is running console.log("Content script is running."); let fontLoaded = false; function loadFont() { const fontUrl = chrome.runtime.getURL("fonts/fot_rodin_pro_m.ttf"); const style = document.createElement('style'); style.textContent = ` @font-face { font-family: 'Wii NTLG PGothic JPN Regular'; src: url('${fontUrl}') format('truetype'); } body { font-family: 'Wii NTLG PGothic JPN Regular', sans-serif !important; } * { font-family: 'Wii NTLG PGothic JPN Regular', sans-serif !important; } #text03-01 { display: flex; /* Enable flexbox */ justify-content: center; /* Center horizontally */ align-items: center; /* Center vertically */ height: 100vh; /* Full height of the viewport */ width: 100%; /* Full width */ } #text05-01 { display: flex; /* Enable flexbox */ justify-content: center; /* Center horizontally */ align-items: center; /* Center vertically */ height: 100vh; /* Full height of the viewport */ width: 100%; /* Full width */ } #text06-01 { display: flex; /* Enable flexbox */ justify-content: center; /* Center horizontally */ align-items: center; /* Center vertically */ height: 100vh; /* Full height of the viewport */ width: 100%; /* Full width */ } .buttonTextBlackM { font-size: 24px; /* Adjust font size as needed */ color: black; /* Set text color */ text-align: center; /* Center text within the div */ } `; // Try to append to the head first const head = document.head || document.getElementsByTagName('head')[0]; if (head) { head.appendChild(style); console.log("Font loaded into ."); return "Font loaded into "; // Return success message } // If head is not available, use MutationObserver to wait for it const observer = new MutationObserver(() => { const head = document.head || document.getElementsByTagName('head')[0]; if (head) { head.appendChild(style); observer.disconnect(); // Stop observing once the style is added console.log("Font loaded into via MutationObserver."); return "Font loaded into via MutationObserver"; // Return success message } }); // Start observing the document for changes observer.observe(document, { childList: true, subtree: true }); // Fallback: If the head is still not available, append to the body const fallbackTimeout = setTimeout(() => { if (!document.head || !document.head.contains(style)) { document.body.appendChild(style); console.log("Font loaded into as a fallback."); observer.disconnect(); // Stop observing if we fall back return "Font loaded into as a fallback"; // Return success message } }, 1000); // Wait for 1 second before falling back // Check if the observer is still active after 2 seconds setTimeout(() => { // If the font is still not loaded, log an error if (!document.head || !document.body.contains(style)) { console.error("Failed to load font: and are not available."); return "Failed to load font: and are not available."; // Return error message } observer.disconnect(); // Clear the observer clearTimeout(fallbackTimeout); // Clear the timeout }, 2000); // Check again after 2 seconds return "Font loading initiated"; // Return initial status } // Check the font state on page load function checkFontState() { chrome.storage.local.get(['fontDisabled'], function(result) { if (!result.fontDisabled) { return loadFont(); } else { return "disabled"; } }); } // Function to load class definitions based on the browser const loadClassDefinitions = async () => { let classDefinitionsUrl; // Check the user agent to determine the browser const userAgent = navigator.userAgent.toLowerCase(); if (userAgent.includes("chrome")) { // Load the class definitions for Chrome classDefinitionsUrl = chrome.runtime.getURL('classDefinitions.js'); // Adjust the path as necessary } else if (userAgent.includes("firefox")) { // Load the class definitions for Firefox classDefinitionsUrl = browser.runtime.getURL('classDefinitions.js'); // Adjust the path as necessary } else { console.warn("Unsupported browser. Class definitions will not be loaded."); return; // Exit if the browser is not supported } // Fetch the class definitions file try { const response = await fetch(classDefinitionsUrl); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const classDefinitions = await response.text(); // Create a script element and set its content const script = document.createElement('script'); script.textContent = classDefinitions; // Insert the script at the start of the element document.documentElement.insertBefore(script, document.documentElement.firstChild); } catch (error) { console.error("Failed to load class definitions:", error); } }; // Load the class definitions loadClassDefinitions(); // Load the existing trace and points from localStorage const result = checkFontState(); console.log(result);