chrome-extension:等待用户输入

时间:2014-07-23 02:49:34

标签: javascript jquery google-chrome-extension

我基本上想让用户点击页面上的元素,并让background.js继续。整个操作是同步的,这意味着后台脚本等待用户输入,一旦它发生,它就会继续。我也试图阻止导航发生(例如,当用户点击链接时),但Chrome会每次都发出警告“你确定要离开这个页面吗?”我想保持沉默。

然而,好像我无法操纵background.js中的dom所以我把它放在内容脚本而不是

function getInput(callback) {
    //on click, fire callback, user has finished input
    $(document).on('click', '*', function (e) {
        $(e.target).addClass('highlight');
        callback();
    });

}

我现在需要实现callback();通过发送消息回到background.js?

此外,dom只能从内容脚本而不是background.js中进行操作吗?

1 个答案:

答案 0 :(得分:0)

根据设计,Chrome扩展程序是异步的。您无法以任何合理的方式阻止具有扩展回调的浏览器。唯一的可能性是使用内置的“确认”方法,或使用webNavigation / webRequest API,这对于此任务来说相当繁重。

不,后台脚本无法直接修改页面的DOM。您需要使用消息传递。

以下是使用“确认”

的示例
function getInput(callback) {
    //on click, fire callback, user has finished input
    var answer = confirm("Prompt for user here..."); // Provides OK/Cancel button w/ passed message
    if (answer === true) { // The user clicked OK.
        $(document).on('click', '*', function (e) {
            $(e.target).addClass('highlight');
            callback();
        });
    } // The user clicked cancel; else logic here, if needed
}