2015-02-18 11 views
9

Stack Overflownthis question में पूछा:ऐप्स लॉन्च करें - खिड़कियों

हर रेपो पर, GitHub कि एक बटन "डेस्कटॉप में क्लोन" (: https://github.com/github/developer.github.com उदाहरण) लेबल किया गया है है। यदि आपके पास मैक के लिए गिटहब स्थापित है, तो href "github-mac: // openRepo/https://github.com/github/developer.github.com" जैसा कुछ है। यह मैक के लिए गिटहब खोलता है और रेपो क्लोन करने की पेशकश करता है। यदि आप नहीं करते हैं, href "http://mac.github.io" है। यह मैक के लिए गिटहब के लिए एक डाउनलोड पेज है। मैं अपनी वेबसाइट पर कुछ ऐसा करना चाहता हूं: अगर स्थापित हो तो मेरा ऐप खोलें और डाउनलोड करने के लिए रीडायरेक्ट करें। यह सर्वोत्तम कैसे हो सकता है पूरा किया?

जवाब Github Conduit के बारे में था, लेकिन, जहाँ तक मुझे पता है, Github नाली केवल Github for Mac के लिए है।

मेरे पास एक ही प्रश्न है, केवल विंडोज ऑपरेटिंग सिस्टम के लिए। गिटहब कैसे जानता है कि कंप्यूटर पर गिटहब स्थापित है या नहीं?


रूप deepcurioustheir answer में कहा, हम निम्नलिखित कोड है, तो एक प्रोटोकॉल पंजीकृत किया गया है की जाँच करता है कि उपयोग करने की आवश्यकता:

$("a[href*='github-windows://']").click(function(e) { 
    var el = $(this); 
    setTimeout(function() { 
     window.location = el.data("data-href-alt"); 
    }, 200); 

    // once you do the custom-uri, it should properly execute the handler, otherwise, the settimeout that you set before will kick in 
    window.location = el.data("href"); 

    e.preventDefault(); 
}); 

और मैं निम्नलिखित HTML लिंक है:

<a href="github-windows://openRepo/https://github.com/jquery/api.jqueryui.com" data-href-alt="https://www.example.com/app-not-installed">Clone in Desktop</a> 

यदि ऐप इंस्टॉल किया गया है, तो Google क्रोम मुझे एक बाहरी प्रोटोकॉल अनुरोध (नीचे) देता है, इसलिए मुझे लगता है कि इसे काम करना चाहिए (हालांकि यह मेरे कंप्यूटर पर कुछ भी नहीं करता है)। लेकिन, यदि ऐप इंस्टॉल नहीं है, तो यह data-href-alt पृष्ठ पर नहीं जाता है।

उदाहरण के लिए, यदि मैं कोड में सभी उदाहरणों में github-windows://some-uninstalled-app:// बदलता हूं, तो लिंक कुछ भी नहीं करता है।

Google Chrome's External Protocol Request

+0

मैं बस अनुमान लगा रहा हूं लेकिन यह जानकर कि कस्टम प्रोटोकॉल हैंडलर कैसे काम करते हैं, शायद यह पता चला है कि इसका कस्टम प्रोटोकॉल संभाला गया है या नहीं। यदि हां, तो उसका ऐप शुरू हो जाएगा। यदि नहीं, तो यह रीडायरेक्ट करता है। तो आपका प्रश्न यह जानने के लिए उबलता है कि किसी दिए गए कस्टम प्रोटोकॉल के लिए एक हैंडलर स्थापित है या नहीं। Https://stackoverflow.com/questions/24779312/simplest-cross-browser-check-if-protocol-handler-is-registered – sashoalm

+0

http://stackoverflow.com/questions/836777/how-to-detect-browsers देखें -प्रोटोकॉल-हैंडलर –

+0

मुझे लगता है कि यह [WebApps] (http://webapps.stackexchange.com) में हो सकता है। आप वहां बेहतर भाग्य प्राप्त कर सकते हैं! ':)' – sircapsalot

उत्तर

1

यह सच है, GitHub नाली केवल मैक के लिए GitHub के लिए है। तो गिटहब वेबसाइट कैसे निर्धारित करती है कि विंडोज के लिए गिटहब स्थापित है या नहीं?

ठीक है, विंडोज के लिए गिटहब स्पष्ट रूप से इस संबंध में बहुत कम परिष्कृत है। "डेस्कटॉप में क्लोन" केवल तभी काम करेगा जब आपने विंडोज के लिए गिटहब स्थापित किया हो और विकल्पों के तहत "खाता जोड़ें" बटन का उपयोग करके अपने खाते को प्रमाणित किया हो।

add account

एक बार जब आप GitHub खाते आप Windows, "में डेस्कटॉप क्लोन" के लिए GitHub को जोड़ा गया में यह किया है लिंक github-windows:// प्रोटोकॉल होगा इतने लंबे समय आप लॉग इन कर रहे के रूप में, बल्कि https://windows.github.com/ लिंक से ।

clone in desktop

लेकिन यदि आप एक कंप्यूटर है कि विंडोज के लिए GitHub इंस्टॉल नहीं है, और बटन पर क्लिक करें पर GitHub के लिए लॉग इन क्या होता है? यह वही लिंक है, जो स्पष्ट कारणों से काम नहीं करेगा।

protocol no understood

हाँ, GitHub जाहिरा तौर पर आँख बंद करके मानता है कि जब आपके Windows कंप्यूटर पर अपने खाते का उपयोग कर रहे हैं, यदि आप Windows स्थापित के लिए GitHub होना आवश्यक है।

+0

प्रश्न के लिए खुली बक्षीस है, धन्यवाद, यह बहुत उपयोगी है। लेकिन, क्या विंडोज़ में काम करने के लिए ऐसी योजना बनाना संभव है, जैसे मैक ओएस में करता है? – 416E64726577

+0

@ 010000010110111001100100011100 मुझे उम्मीद है कि आप कर सकते हैं। मुझे नहीं पता कि क्यों गिटहब ने विंडोज और मैक के बीच इसे अलग करना चुना। –

1

आप क्रॉस-ब्राउज़र कस्टम प्रोटोकॉल का पता लगाने पुस्तकालय जो जावास्क्रिप्ट में लिखा है की कोशिश कर सकते हैं:

... या कुछ और आपके आवेदन की स्थापना के दौरान ब्राउज़र की उपयोगकर्ता एजेंट को संशोधित करने की तरह hacky है।

संबंधित मुद्दे