2014-09-22 2 views
-1

Так что я хочу, чтобы popup.html открывался, когда я нажимаю на расширение, однако, когда я дважды нажимаю на него, я хочу, чтобы запускалась другая функция. У меня уже есть код (см. Ниже), который определяет, является ли он одиночным/двойным кликом. Пожалуйста помоги!Программно открытый popup.html в chrome extension?

var alreadyClicked = false; 
var timer; 

chrome.browserAction.onClicked.addListener(function (tab) { 

    if (alreadyClicked) { 
     clearTimeout(timer); 

     console.log("Double click"); 
     alreadyClicked = false; 
     return; 
    } 

    //Set Click to true 
    alreadyClicked = true; 

    //Add a timer to detect next click to a sample of 250 
    timer = setTimeout(function() { 
     //No more clicks so, this is a single click 
     console.log("Single click"); 



     //Clear all timers 
     clearTimeout(timer); 

     //Ignore clicks 
     alreadyClicked = false; 
    }, 250); 
}); 
+0

возможно дубликат [Как я могу открыть всплывающее окно моего внутреннего абонента с JavaScript?] (HTTP: // stackoverflow.com/questions/10479679/how-can-i-open-my-extensions-pop-up-with-javascript) – Xan

+0

Есть много вопросов о SO, которые легко найти, что все говорят, что невозможно открыть popup программно. – Xan

ответ

-1

Если вы правильно определили свой браузер с вашим popup.html ... тогда он должен всплывать нормально. Но, вам нужно отменить акцию щелчок в случае двойного щелчка и обрабатывать его самостоятельно:

var alreadyClicked = false; 
var timer; 

chrome.browserAction.onClicked.addListener(function (tab) { 

    if (alreadyClicked) { 
     clearTimeout(timer); 

     console.log("Double click"); 
     alreadyClicked = false; 
     chrome.browserAction.disable(tab.id); //disables the browserAction (popup.html) 
     processDoubleClick(); 
     chrome.browserAction.enable(tab.id);  //renable the browserAction (popup.html) 
     return false; 
    } 

    //Set Click to true 
    alreadyClicked = true; 

    //Add a timer to detect next click to a sample of 250 
    timer = setTimeout(function() { 
     //No more clicks so, this is a single click 
     console.log("Single click"); 
     processSingleClick(); 



     //Clear all timers 
     clearTimeout(timer); 

     //Ignore clicks 
     alreadyClicked = false; 
    }, 250); 
}); 


function processDoubleClick(){ 
    // do what you want here 
} 
+1

Это не сработает. Если всплывающее окно определено, 'chrome.browserAction.onClicked' не будет срабатывать. – Xan

+0

то что должен определить html как? – user3374309

Смежные вопросы