2016-03-22 17 views
1

Bir javascript eklentisinde (Greasemoneky) çalışan Firefox için küçük bir komut dosyası oluşturmaya çalışıyorum. biletlerJS - Pencere Odak ve Firefox'ta öne getir

if (isEmpty($('#incident_table > tbody'))&isEmpty($('#task_table > tbody'))) 

sonra bu durumdan bulunursa

istediğim: Biz bilet gelmeden için monitör bir kuyruk, aşağıdaki sayfayı her 2 dakikada bir yenilenir ve yapması gereken bir şeyi şekilde düzenlemelidir Aşağıdakiler gerçekleşir:
- Görev çubuğu, bir ileti ile yanıp söner, bu nedenle görünür durumda
- pencere odaklanırsa "Satırlar kuyruğunda!" görüntülenir. Hemen uyarı
- Pencere odaklanmamışsa, hala odaklanmamışsa 10 saniye bekler - "Sıradaki biletler!" uyar ve pencereyi öne getir.

Ben yenileme ve yanıp sönen bir bölümünü var ama odak parçası ... Ben etrafa oldum işe alınamıyor ve Firefox windowFocus ile bazı "sorunlar" (sahip görüyoruz) ve tüm "öne getir", aşağıdaki kodun çoğu bu sitede bulduğum şeylerden ilham alıyor.

Herhangi bir girdi takdir edilir! Ben de alternatiflere açılıyorum - sonuçta bunun yapılması gereken şey yenilemek, durumu kontrol etmek ve zaten ona bakıp bakmadığımı bildirmek ya da odaklanmamışsa 10 saniye beklemek "yumuşak bildirim" (yanıp söner) sonra getir fark etmesem önden.

Selamlar,
Dan

başka bir işlem penceresi odaklanmış durumdayken pencereyi odaklanamazsınız Windows işletim sisteminde
{ 
newExcitingAlerts = (function() { 
var oldTitle = document.title; 
var msg = "***NEW***"; 
var timeoutId; 
var blink = function() { document.title = document.title == msg ? 'Tickets in queue!' : msg; }; 
var clear = function() { 
clearInterval(timeoutId); 
document.title = oldTitle; 
window.onmousemove = null; 
timeoutId = null; 

}; 

    return function() { 
     if (!timeoutId) { 
      timeoutId = setInterval(blink, 1000); 
      window.onmousemove = clear; 
     } 
    }; 
}()); 


$(document).ready(function(){ 

    function isEmpty(el){ 
     return !$.trim(el.html()); 
    } 
    if (isEmpty($('#incident_table > tbody'))&isEmpty($('#task_table > tbody'))) { 

    } 


else{ 

     newExcitingAlerts(); 

    } 

    setTimeout(function() { 
     location.reload(); 
    }, 120000); 
}); 

} 

cevap

0

. Bunun için js-ctypes kullanmalısın.

Mac OS X ve Linux'ta, işleminizin diğer işlevlerden normal işlevlerle çalmasını sağlayabilirsiniz. Ama eğer yapamazsan, işi bitirmek için js-ctypes'i kullanabilirsin.

İşte

Windows bunu yapmak için nasıl - https://stackoverflow.com/a/32038880/1828637

O OS X ve Linux üzerinde daha sonra Windows üzerinde daha zordur. Js-ctypes kullanarak tüm sistemlere odaklandım. Eğer mevcut fonksiyonlarla nasıl yapacağınızı bulamazsanız, bana bildirin.

0

Kullandığım alternatif, çekicilik gibi çalışıyor. Web API bildirimleri.

document.addEventListener('DOMContentLoaded', function() { 
    if (Notification.permission !== "granted") 
    Notification.requestPermission(); 
}); 

function notifyMe() { 
    if (!Notification) { 
    alert('Desktop notifications not available in your browser. Try Chromium.'); 
    return; 
    } 

    if (Notification.permission !== "granted") 
    Notification.requestPermission(); 
    else { 
    var notification = new Notification('Tickets in queue!', { 
     icon: 'http://siliconangle.com/files/2014/05/servicenow-icon.png', 
     body: "There are new tickets in queue, please acknowledge!", 
    }); 

    notification.onclick = function() { 
     window.open("https://cchprod.service-now.com/task_list.do?sysparm_query=assignment_group%3D3139519437b7f1009654261953990e1f^ORassignment_group%3D31de85e337818a00ef8898a543990e99^ORassignment_group%3Da40029e937ec420065aa261953990eb5^ORassignment_group%3De903ad2d37ec420065aa261953990ecb^ORassignment_group%3Dd25fe5323779c24065aa261953990e54^ORassignment_group%3D508639363779c24065aa261953990e29^ORassignment_group%3D51fe5a37379e0a00ef8898a543990ea2^ORassignment_group%3D3d8171b23779c24065aa261953990e21^ORassignment_group%3Decfe5a37379e0a00ef8898a543990e6c^ORassignment_group%3D48c0b9723779c24065aa261953990e5d^ORassignment_group%3De5fde9fe3739c24065aa261953990e75^ORassignment_group%3D15fe5a37379e0a00ef8898a543990e99^ORassignment_group%3D15fe5a37379e0a00ef8898a543990ea7^ORassignment_group%3D1ed3f1f23779c24065aa261953990e47^active%3Dtrue^sys_class_name%3Dincident^ORsys_class_name%3Dsc_req_item^assigned_toISEMPTY&sysparm_first_row=1&sysparm_view=");  
    }; 

    } 

} 




{ 
newExcitingAlerts = (function() { 
var oldTitle = document.title; 
var msg = "***NEW***"; 
var timeoutId; 
var blink = function() { document.title = document.title == msg ? 'Tickets in queue!' : msg; }; 
var clear = function() { 
clearInterval(timeoutId); 
document.title = oldTitle; 
window.onmousemove = null; 
timeoutId = null; 

}; 

    return function() { 
     if (!timeoutId) { 
      timeoutId = setInterval(blink, 1000); 
      window.onmousemove = clear; 
     } 
    }; 
}()); 



    $(document).ready(function() { 
    function isEmpty(el) { 
    return !$.trim(el.html()); 
    } 
    var x = document.getElementById("task_table").getAttribute("grand_total_rows"); 

    if(x != "0") { newExcitingAlerts(); 
     notifyMe(); } 

     else 

     { } 

    setTimeout(function() { 
     location.reload(); 
    }, 120000); 
}); 


} 
+0

İlginç, bu, Windows'ta başka bir uygulamaya odaklanmış olsanız bile Firefox'u öne çıkarır mı? – Noitidart