iT邦幫忙

1

在chrome extension 的 background中觸發事件

  • 分享至 

  • xImage

background.js

var get_last = function(){
    chrome.bookmarks.getRecent(1,function(num){
      move(num[0])
    });
}

var move = function(last){
    const dest = {
      index: 0
    }

    chrome.bookmarks.move(last.id,dest);
}

chrome.bookmarks.onCreated.addListener(
    get_last()
);

我想在新增書籤時,把它移到資料夾的最上面(index:0)
看起來會像從上面加入的 而不是預設的加在下面

但它只有在我重整背景頁面時會觸發一次
之後新增書籤 都不會觸發onCreatd這段

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

4
dragonH
iT邦超人 5 級 ‧ 2019-10-22 09:32:12
最佳解答
chrome.bookmarks.onCreated.addListener(
    get_last
);

js 問題

已實測過

你難道不會好奇

明明還沒 create 就觸發 event

不是很奇怪嗎XD /images/emoticon/emoticon37.gif

至於原因

最直白的講法

get_last // function

get_last() // function 執行後 return 的值
看更多先前的回應...收起先前的回應...
eason54 iT邦新手 5 級 ‧ 2019-10-22 10:20:36 檢舉

我也覺得奇怪
謝謝您讓我上了一課

dragonH iT邦超人 5 級 ‧ 2019-10-22 10:22:38 檢舉

/images/emoticon/emoticon12.gif

小魚 iT邦大師 1 級 ‧ 2019-10-22 10:22:53 檢舉

還有這樣的喔,
js真是神奇的東西.

dragonH iT邦超人 5 級 ‧ 2019-10-22 10:27:45 檢舉

js 滿山滿谷的坑 /images/emoticon/emoticon02.gif

froce iT邦大師 1 級 ‧ 2019-10-22 13:51:11 檢舉

...小魚你的前端果然是兼職的,居然說這很神奇,這應該你一直都在寫,只是都寫匿名函式而已。XD

$.ajax.post("url", options).done(function(){
    ....
})

跟下面是一樣的

function requestHandler(){
    ....
}

$.ajax.post("url", options).done(requestHandler)

這用法很多語言都有,就跟callback要傳function一樣。
python有、golang也有
https://www.kancloud.cn/itfanr/go-by-example/81679

回到話題,動態語言這點真的坑很大,除非用type hint要不然就是得去翻api或規格書,要不然你根本不知道要傳什麼類型進去。
https://crxdoc-zh.appspot.com/extensions/bookmarks#event-onCreated
寫得很清楚:callback 参数应该是一个如下形式的 函数

dragonH iT邦超人 5 級 ‧ 2019-10-22 14:44:30 檢舉

其實如果他發現他的

last.id

onCreated callback 的 id

是一樣的東西的話

就會很自然的去用

應該也就不會遇到這個問題了XD /images/emoticon/emoticon01.gif

所以他的 code 最簡潔會長這樣

chrome.bookmarks.onCreated.addListener((id) => chrome.bookmarks.move(id, { index: 0 }));
1
小魚
iT邦大師 1 級 ‧ 2019-10-22 08:48:40

onCreatd 看英文就是建立的時候才會觸發啊.
你應該要找其他事件.

dragonH iT邦超人 5 級 ‧ 2019-10-22 09:33:44 檢舉

onCreatd 看英文就是建立的時候才會觸發啊.
你應該要找其他事件.

應該是這個 event 沒錯 /images/emoticon/emoticon12.gif

onCreated
    Fired when a bookmark or folder is created.

參考

eason54 iT邦新手 5 級 ‧ 2019-10-22 10:14:07 檢舉

謝謝您的回答

我要發表回答

立即登入回答