2013-09-22 3 views
-1

Как вы активируете функцию, когда пользователь щелкает и удерживает любую страницу в хромированном расширении? Вот что я использую, и это не работает:Функция триггера при нажатии и удержании пользователя [chrome extension]

manifest.json

{ 
    "manifest_version": 2, 

    "name": "Harvix extension", 
    "description": "Shortcut to search on Harvix", 
    "version": "0.0.1", 

    "content_scripts": [ 
     { 
      "matches": ["http://*/*"], 
      "js": ["jquery.js", "core.js"] 
     } 
    ], 

    "permissions": [ 
     "tabs", "<all_urls>" 
    ] 
} 

core.js

var timeout; 
function open(text) { 
    $('#myElement').mousedown(function() { 
     timeout = setTimeout(null, 1000); 
    }).bind('mouseup mouseleave', function() { 
     clearTimeout(timeout); 
    }); 
    alert('hello'); 
} 

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript(null, {code: open(window.getSelection().toString())}); 
}); 
+0

возможно дубликат [Trigger нажмите и удерживайте событие] (http://stackoverflow.com/questions/14445375/trigger-click-and-hold-event) –

+0

я думаю, что речь идет о Darg & падение JQuery – Pixeladed

+0

If вы предпочитаете не использовать jQuery в своем расширении, тогда применяется тот же метод, но вам все равно придется катить собственные методы Click и Drag, которые я собрал, хотя это «js»: ["jquery.js", "core. js "]' в вашем коде означает, что у вас есть библиотека jQuery в вашем распоряжении, чтобы сделать вашу жизнь проще, можете также использовать ее –

ответ

0

В вашем core.js, замените это:

chrome.browserAction.onClicked.addListener(function(tab) { 
    chrome.tabs.executeScript(null, {code: open(window.getSelection().toString())}); 
}); 

С этим:

$('body').on('click', '*', function() { 

    open(window.getSelection().toString());   

}); 

Это будет преодолеть проблему не в состоянии целевой chrome.browserAction объекта внутри скрипта содержимого.

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