[英]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.