Witam,

Napisałem sobie małe rozszerzenie do Chrome, które po upływie danego czasu zasłania zawartość okien białym div'em z polem do podania hasła (to jeszcze kwestia do dopracowania).
Niestety skrypt nie chce współpracować z gmail'em albo ze stronami na których znajdują się mapy od google'a - tzn. w momencie blokowania wyświetla mi się seria błędów (zał.)



a po usunięciu div'a strona gmail'a jest jakby zablokowana i nic nie można kliknąć.
Podrzucam kod, może ktoś coś poradzi.

Manifest.json
[JAVASCRIPT] pobierz, plaintext
  1. {
  2. "manifest_version": 2,
  3.  
  4. "name": "TabLock",
  5. "description": "TabLock.",
  6. "version": "1.0",
  7. "permissions": [
  8. "tabs", "http://*/", "https://*/"
  9. ],
  10. "content_scripts": [
  11. {
  12. "matches": ["<all_urls>"],
  13. "css": ["css/style.css"],
  14. "js": ["js/keyListener.js"]
  15. }
  16. ],
  17. "background": {
  18. "persistent": false,
  19. "scripts": ["js/background.js"]
  20. },
  21. "browser_action": {
  22. "default_icon": "images/menu.png",
  23. "default_popup": "menu.html",
  24. "default_title": "Lock tabs"
  25. },
  26. "web_accessible_resources": [
  27. "js/lock.html"
  28. ]
  29. }
[JAVASCRIPT] pobierz, plaintext


Background.js
[JAVASCRIPT] pobierz, plaintext
  1. chrome.runtime.onMessage.addListener(
  2. function(request, sender, sendResponse) {
  3. console.log(sender.tab ?
  4. "from a content script:" + sender.tab.url :
  5. "from the extension");
  6.  
  7. if (request.lock == "yes_key"){
  8. chrome.tabs.executeScript({
  9. file: 'js/lock.js'
  10. });
  11. sendResponse({farewell: "Lock JS KEY LISTENER"});
  12. }
  13.  
  14. if (request.lock == "yes"){
  15. chrome.tabs.query({}, function(tabs){
  16. for (var i = 0; i < tabs.length; i++) {
  17. chrome.tabs.executeScript(tabs[i].id,
  18. {
  19. file: 'js/lock.js'
  20. }, function() {
  21. if (chrome.runtime.lastError) {
  22. console.log(chrome.runtime.lastError.message);
  23. }
  24. });
  25. }
  26. });
  27. sendResponse({farewell: "Lock BY TIMER"});
  28. }
  29. }
  30. );
[JAVASCRIPT] pobierz, plaintext


Panel.js
[JAVASCRIPT] pobierz, plaintext
  1. $(function(){
  2. $('#lock_all').click(function(){
  3. chrome.tabs.query({}, function(tabs){
  4. for (var i = 0; i < tabs.length; i++) {
  5. chrome.tabs.executeScript(tabs[i].id,
  6. {
  7. file: 'js/lock.js'
  8. }, function() {
  9. if (chrome.runtime.lastError) {
  10. console.log(chrome.runtime.lastError.message);
  11. }
  12. });
  13. }
  14. });
  15. });
  16. });
  17.  
  18. $(function(){
  19. $('#unlock_all').click(function(){
  20. chrome.tabs.query({}, function(tabs){
  21. for (var i = 0; i < tabs.length; i++) {
  22. chrome.tabs.executeScript(tabs[i].id,
  23. {
  24. file: 'js/unlock.js'
  25. }, function() {
  26. if (chrome.runtime.lastError) {
  27. console.log(chrome.runtime.lastError.message);
  28. }
  29. });
  30. }
  31. });
  32. });
  33. });
  34.  
  35.  
  36. $(function(){
  37. $('#unlock_this').click(function(){
  38. chrome.tabs.executeScript({
  39. file: 'js/unlock.js'
  40. });
  41. });
  42. });
  43.  
  44. $(function(){
  45. $('#lock_this').click(function(){
  46. chrome.tabs.executeScript({
  47. file: 'js/lock.js'
  48. });
  49. });
  50. });
[JAVASCRIPT] pobierz, plaintext


keyListener.js
[JAVASCRIPT] pobierz, plaintext
  1. window.onkeydown = function (e) {
  2. e = e || event;
  3. var keyCode = e.keyCode,
  4. letter = (String.fromCharCode(e.keyCode) || '').toLowerCase();
  5.  
  6. if (e.ctrlKey && 'q' === letter)
  7. {
  8. chrome.runtime.sendMessage({lock: "yes_key"}, function(response) {
  9. console.log(response.farewell);
  10. clearTimeout(t);
  11. });
  12. }
  13. }
  14.  
  15. var c = 0;
  16. var t;
  17. var czas = 30;
  18.  
  19. function timer() {
  20. if(c > czas){
  21. clearTimeout(t);
  22. }else{
  23. c = c + 1;
  24. t = setTimeout(window, function(){ timer() }, 1000);
  25. if(c > czas){
  26. chrome.runtime.sendMessage({lock: "yes"}, function(response) {
  27. console.log(response.farewell);
  28. });
  29. }
  30. }
  31. console.log(c);
  32. }
  33.  
  34. document.addEventListener("mousemove", function(){
  35. c = 0;
  36. });
  37.  
  38. timer();
[JAVASCRIPT] pobierz, plaintext


lock.js
[JAVASCRIPT] pobierz, plaintext
  1. var pass = chrome.extension.getURL("js/lock.html");
  2.  
  3.  
  4. if(document.getElementById("changestateLock") !== null){
  5. document.getElementById("changestateLock").style.display = "inline";
  6. document.body.style.overflow = "hidden";
  7. //console.log("Zablokowano");
  8. }
  9.  
  10. if(document.getElementById("changestateLock") == null){
  11. document.body.innerHTML += '<div id="changestateLock"><object type="text/html" data=' + pass + '></object></div>';
  12. document.body.style.overflow = "hidden";
  13. //console.log("Zablokowano");
  14. }
[JAVASCRIPT] pobierz, plaintext


unlock.js
[JAVASCRIPT] pobierz, plaintext
  1. if(document.getElementById("changestateLock") !== null){
  2. if(document.getElementById("changestateLock").style.display !== "none"){
  3. document.getElementById("changestateLock").remove();
  4. document.body.style.overflow = "visible";
  5. //window.location.reload();
  6. console.log("Odblokowano");
  7. }
  8. }
[JAVASCRIPT] pobierz, plaintext