无法让脚本执行,chrome消息传递错误?

时间:2015-03-07 03:16:08

标签: javascript jquery google-chrome google-chrome-extension

我试图完成这个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>

1 个答案:

答案 0 :(得分:1)

您的代码永远不会进入内容脚本中的禁用分支:

    if (request.greeting == "hello") {
        enable();
    } else {
        disable();
    }

无论关闭/开启状态如何,总是发送{greeting: "hello"}