0
我正在使用活動頁面!並需要使用子菜單(深層樹)創建上下文菜單。
它的深度取決於用戶數據。並且創建該上下文菜單可能非常頻繁,因爲它取決於用戶的操作。我可以用一些邏輯來降低這些更新的頻率,但仍然可以在會話期間發生幾次。
問題是,創建這些菜單會凍結Chrome的秒數或兩個。
由於我使用活動頁面,因此我必須使用chrome.contextMenus.onClicked.addListener
。之前,當我使用onClick處理程序時,我沒有遇到凍結(相同數量的數據)。
現在我必須在我的主要上下文項目(任何其他方法?)的回調中創建子菜單創建。chrome.contextMenus.create凍結了鉻
我這是怎麼做的:
function createMenu(data) {
chrome.contextMenus.removeAll(function() {
chrome.contextMenus.create({
id: "v7",
title : "some title",
type : "normal",
contexts : ["editable"],
}, function() {
function buildTree(NTF, parID) {
for (var i=0, l=NTF.length; i<l; i++) {
var menuId = NTF[i].id;
var menuText = NTF[i].text;
chrome.contextMenus.create({
id: menuId,
parentId: parID,
title: menuText,
type: "normal",
contexts: ["editable"],
});
if (NTF[i].children) buildTree(NTF[i].children, menuId);
}
}
buildTree(data, 'v7');
});
});
}
,這是我的點擊handeler
chrome.contextMenus.onClicked.addListener(function(info, tab) {
if (info.menuItemId.indexOf("id_pattern_of_my_submenu_items") > -1) {
//do some stuff with it
}
});
有沒有更好的辦法,使無嚴寒鉻這項工作? 我的數據數組包含大約700個節點,最大深度爲3 lvl。