簡體   English   中英

chrome-extension:等待用戶輸入

[英]chrome-extension: wait for input from user

我基本上是想讓用戶單擊頁面上的元素,然后繼續執行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?

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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM