我试图完成这个Chrome扩展程序,我一直在努力,但我只是陷入困境。
基本上我试图在用户启用时执行脚本(通过单击我在弹出窗口中输入的开关)。要么我错过了一些代码,要么我的Chrome消息传递在某些时候是不稳定的,因此popup无法与内容进行通信。
我是初学者,这是我写过的第一件事,所以任何帮助都会受到高度赞赏。
这是代码,如果您需要查看其他内容,请告诉我
的script.js
var audio = new Audio("http://a.tumblr.com/tumblr_libwsrXYlA1qbma2vo1.mp3"),
timer = null,
isScrolling = false;
function enable() {
$(window).on('scroll', function () {
clearTimeout(timer);
audio.play();
if (!isScrolling) {
isScrolling = true;
setTimeout(function () {
audio.pause();
isScrolling = false;
}, 600);
}
});
}
function disable() {
$(window).off('scroll');
if (!isScrolling) {
isScrolling = true;
setTimeout(function () {
audio.pause();
isScrolling = false;
}, 600);
}
}
chrome.tabs.onMessage.addListener(
function (request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello") {
enable();
} else {
disable();
}
}
);
popup.js
$('#myonoffswitch').on('click', function (e) {
if (e.target.checked) {
console.log('enable');
} else {
console.log('disable');
}
chrome.tabs.sendMessage({greeting: "hello"}, function (response) {
console.log(response.farewell);
});
});
mypopup.html
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/mystyle.css" />
</head>
<body>
<div class="onoffswitch">
<input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="myonoffswitch" checked>
<label class="onoffswitch-label" for="myonoffswitch">
<span class="onoffswitch-inner"></span>
<span class="onoffswitch-switch"></span>
</label>
</div>
<script src="/data/script.js"></script>
<script src="/data/jquery-2.1.3.js"></script>
<script src="popup.js"></script>
</body>
</html>
答案 0 :(得分:1)
您的代码永远不会进入内容脚本中的禁用分支:
if (request.greeting == "hello") {
enable();
} else {
disable();
}
无论关闭/开启状态如何,总是发送{greeting: "hello"}
。