1
Google Chrome拡張機能を使用しています。私自身は解決できないバグに遭遇しています。現在のタブでコンテンツスクリプトの実行を停止するにはどうすればよいですか?
それは予想通り、単一のYouTubeのタブでYouTubeのダークモードに切り替える動作しますが、あなたはYouTubeやのCtrl/Cmdをにしている場合はcontent.js
が再びトリガされ、(新しいタブで開く)リンクをクリックして、現在のタブが白くなり、新しいタブが暗くなります。
暗いタブの場合、「子」タブは自動的に暗くなります。
manifest.jsonを:
{
"manifest_version": 2,
"permissions": [
"https://www.youtube.com/*",
"activeTab"
],
"background": {
"scripts": ["background.js"],
"persistant": false
},
"browser_action": {
"default_title": "Engage Youtube Dark Mode."
},
"content_scripts": [
{
"matches": ["https://www.youtube.com/*"],
"js": ["content.js"]
}]
}
background.js:
//var alreadyTriggered = false;
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, {file: "clicker.js"});
});
/*
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
alreadyTriggered = false;
});*/
chrome.runtime.onMessage.addListener(function(response, sender, sendResponse) {
//if (!alreadyTriggered) {
chrome.tabs.executeScript(null, {file: "clicker.js"});
//alreadyTriggered = true;
//};
return true;
});
content.js:
var myDate = new Date();
if ((myDate.getHours() <= 7) || (myDate.getHours() >= 19))
{
var darkMode = document.body.getAttribute("dark");
if (!darkMode) {
chrome.runtime.sendMessage(window.location.href, function(result) {});
};
};
私は私が間違ってactiveTab
を使用していることを推測しています。どんな助けでも大歓迎です。ありがとう!
clicker.js:
window.onload = doStuff();
を使用して そしてdarkMode
の値がnull
、ないundefined
たことを確認する:
stepOne();
function stepOne() {
try {
var buttons = document.querySelectorAll("button.ytd-topbar-menu-button-renderer");
buttons[0].click();
stepTwo();
}
catch(error) {
setTimeout(stepOne, 250);
}
}
function stepTwo() {
try {
buttons = document.querySelectorAll("paper-item.ytd-account-settings");
buttons[0].click();
stepThree();
}
catch(error) {
setTimeout(stepTwo, 100);
}
}
function stepThree() {
try {
buttons = document.querySelectorAll("paper-toggle-button.style-scope.ytd-account-settings");
buttons[0].click();
document.body.click();
}
catch(error) {
setTimeout(stepThree, 100);
}
}
@wOxxOmコメントありがとうございます。 content.jsを追加するように更新しました – Sam