2016-08-15 6 views
9

मैं एक सफारी एक्सटेंशन बनाने की कोशिश कर रहा हूं, जहां कोई उपयोगकर्ता कमांड + बी हिट करता है तो यह पॉपओवर दिखाएगा। नीचे दिए गए कोड का उपयोग करना काम करता है लेकिन हमेशा एक अलग विंडो पर पॉपओवर दिखाता है जो वर्तमान विंडो/टैब नहीं है। मैं इसे एक अलग विंडो में स्विच करने और पॉपओवर खोलने के बजाय वर्तमान विंडो पर पॉपओवर प्रदर्शित करना चाहता हूं। यह पूरी तरह से काम करता है अगर केवल एक सफारी खिड़की खुलती है लेकिन कई खिड़कियां खुली होने पर समस्याएं शुरू होती हैं।सफारी एक्सटेंशन पॉपओवर अलग विंडो दिखा रहा है

कोई विचार?

वैश्विक पृष्ठ फ़ाइल:

<script> 
    safari.application.addEventListener('message', function (e) { 
     if (e.name == 'Show Popover') { 
      safari.extension.toolbarItems[0].showPopover(); 
     } 
    }, false); 
</script> 

इंजेक्शन सामग्री:

document.addEventListener("keydown", keydown); 

function keydown(event) { 
    if (event.metaKey && event.keyCode == 66) { 
     event.preventDefault(); 
     safari.self.tab.dispatchMessage('Show Popover', {}); 
    } 
} 

उत्तर

6

इसका कारण यह है आप मैन्युअल रूप से यहाँ पहली toolbarItem चयन कर रहे हैं;

safari.extension.toolbarItems[0].showPopover(); 

आपको यह निर्धारित करने की आवश्यकता है कि कौन सा टूलबार पॉपअप को प्रदर्शित करने की आवश्यकता है;

ऐसा कुछ;

var toolBarID = 'my_id'; 
var activeItem = safari.extension.toolbarItems.filter(function (button) { 
    return button.identifier == toolBarID && button.browserWindow == safari.application.activeBrowserWindow; 
})[0]; 

फिर आप showPopover फ़ंक्शन के लिए इस ऑब्जेक्ट का उपयोग करते हैं;

activeItem.showPopover(); 

आशा इस ऐसा दिखता है जैसे काम में मदद करता है

+0

महान !! आपकी मदद के लिए बहुत बहुत शुक्रिया। एक नोट यह है कि मुझे अपने टूलबार ItemId में 'toolbarItemId' को बदलना पड़ा। अच्छा होगा अगर आप अपने उत्तर को यह उल्लेख करने के लिए संपादित कर सकते हैं कि भविष्य के संदर्भ के लिए और अन्य उपयोगकर्ताओं के लिए। एक बार फिर धन्यवाद। –

+0

@CharlieFish कोई समस्या नहीं है, और ओह मेरे खराब - अद्यतन :) – JayIsTooCommon

+0

फिर से धन्यवाद। बस इतना ही आपको पता है कि मैं 7 दिन की अवधि के अंत में बक्षीस का पुरस्कार दूंगा। :) –

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