簡體   English   中英

Chrome擴展程序中的setTimeOut范圍

[英]setTimeOut scope in a Chrome extension

我的Chrome擴展程序中有一個通知功能,由后台頁面管理(background.html)此頁面調用setNotificationDelay()函數,該函數基本上是先前計時器的刪除,后跟setTimeOut。

function setNotificationDelay() {
    clearNotificationTimer();
    newDelay = getNotificationDelay()
    notificationTimer = setTimeout(showNotification, newDelay);
    }
}

我還有一個options.html頁面,允許配置通知小時。 我想在修改配置時修改后台超時,但是當我從Option頁面調用setNotificationDelay()時它不起作用,我認為這是因為定時器的范圍附加到父頁面。

如果我打開選項頁面,則會觸發超時,如果我關閉它,通知就不會發生。

如何將此計時器附加到后台頁面? 有沒有更好的方法來實現它?

謝謝。

編輯:chrome.extension具有getBackground頁面方法,該方法返回后台頁面的窗口對象:

function setNotificationDelay() {
    clearNotificationTimer();
    newDelay = getNotificationDelay()
    notificationTimer = chrome.extension.getBackgroundPage().setTimeout(showNotification, newDelay);
    }
}

options.js僅在options.html頁面打開時才有效,我認為您在等待通知時不想讓頁面保持打開狀態。 你想要的(我認為)是讓background.js設置通知( background.jsoptions.js訪問相同的字符串變量localStorage.yourNotificationDelay )。

需要注意的一件事是,如果您使用的是事件頁面而不是背景頁面,則不會發生超過幾秒鍾的通知,因為Chrome將卸載后台頁面。 在這種情況下,您需要使用警報

編輯:你的編輯讓我覺得我不理解你。 也許您希望用戶在計時器運行時更​​改間隔? 然后我建議使用newDelaybackground.js發送消息 ,並使用它來調用setNotificationDelay()

暫無
暫無

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

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