2012-03-06 18 views
5

में बीप बजाना मैं क्रोम एक्सटेंशन का उपयोग करके एसओ चैट में अधिसूचना बीप (या बीप का उल्लेख) खेलना चाहता हूं, लेकिन मुझे यह सही नहीं मिल रहा है (यदि यह भी संभव है)। मैं निम्नलिखित कोड की कोशिश की है:एसओ चैट

this.notify = function() { 
    $("#jplayer").jPlayer('play', 0); 
} 

लेकिन मैं निम्नलिखित त्रुटि मिलती है:

Uncaught TypeError: Object [object Object] has no method 'jPlayer'

वहाँ का उपयोग करें ताकि ध्वनि 'मॉड्यूल' चैट/खिलाड़ी @mention बीप खेलने के लिए कोई तरीका है?

अद्यतन

मैं जानता हूँ कि मैं सेटअप मेरे अपने 'ऑडियो प्लेयर' कर सकते हैं, लेकिन मैं ऑडियो प्लेयर है कि इतने पर यहां बातचीत में प्रयोग किया जाता है का उपयोग करना चाहते और मुझे सूचना बीप उपयोग करने के लिए करना चाहते हैं।

मैंने अपना पूरा कोड GitHub gist में अपलोड किया है जो this project का हिस्सा है। जिस लाइन में मैं ऑडियो प्लेयर को कॉल करने की कोशिश कर रहा हूं वह 224 है।

+0

क्या फ़ाइल में आप इस कोड को रखा है? मुझे लगता है कि कोड पृष्ठ पर नहीं चल रहा है, बल्कि विस्तार के लिए पृष्ठभूमि पृष्ठ। – mowwwalker

+0

@Walkerneo मैं इसे "content_scripts" जेएस फ़ाइलों में से एक में चला रहा हूं। – PeeHaa

+0

@ वाल्कर्नियो मैंने प्रोजेक्ट के लिए एक लिंक जोड़ा ताकि आप सत्यापित कर सकें। – PeeHaa

उत्तर

3

यह एक सैंडबॉक्स चीज है जो मुझे लगता है, आपको पृष्ठ से स्क्रिप्ट निष्पादित करने की अनुमति नहीं है, इसलिए मुझे लगता है कि प्लगइन्स गिनती है।
कि इसकी सिर्फ सैंडबॉक्स बाहर खेल के एक मामले में जाना जाता है ....

script.js

var customEvent = document.createEvent('Event'); 
customEvent.initEvent('JPlayerNotify', true, true); 

function notify() { 
    document.getElementById('communicationDIV').innerText='notify'; 
    document.getElementById('communicationDIV').dispatchEvent(customEvent); 
} 

// Utitlity function to append some js into the page, so it runs in the context of the page 
function appendScript(file) { 
    var script = document.createElement('script'); 
    script.setAttribute("type", "application/javascript"); 
    script.setAttribute("src", chrome.extension.getURL(file)); 
    document.head.appendChild(script); 
} 

appendScript("JPlayer.js"); 

// had to wait for a bit for the page to be ready (dialup and all), you wont need to do the setTimeout 
setTimeout("notify()",3500); 

JPlayer.js

var notify_node = document.createElement('div'); 
notify_node.id = 'communicationDIV'; 
document.documentElement.appendChild(notify_node); 

notify_node.addEventListener('JPlayerNotify', function() { 
    var eventData = notify_node.innerText; 
    if (eventData=='notify'){ 
    $("#jplayer").jPlayer('play', 0); 
    } 
}); 

manifest.json

{ 
    "name": "JPlayerNotify", 
    "version": "0.5.0", 
    "description": "JPlayerNotify", 
    "content_scripts" : [ 
    { 
     "matches": ["http://chat.stackoverflow.com/rooms/*"], 
     "js" : ["script.js"], 
     "run_at" : "document_idle", 
     "all_frames" : false 
    } 
    ], 
    "permissions": [ 
    "http://stackoverflow.com/*", 
    "https://stackoverflow.com/*", 
    "http://*.stackoverflow.com/*", 
    "https://*.stackoverflow.com/*" 
    ] 
} 

आप पृष्ठ यहाँ के साथ संवाद स्थापित पर कुछ सामान देख सकते हैं ... http://code.google.com/chrome/extensions/content_scripts.html

3

क्यों नहीं बस:

new Audio('beep.wav').play(); 

क्रोम ऑडियो समर्थन (हाल के संस्करण वैसे भी) है, तो यह ठीक होना चाहिए। मैं अपने विस्तार में यही उपयोग करता हूं।

+0

पर्याप्त मेला, यह आपका विशेषाधिकार है। लेकिन इस तरह काम करता है, और सरल है। क्या आपके पास इस एसओ चैट मॉड्यूल के लिए किसी भी दस्तावेज़ीकरण का लिंक है, इसलिए मैं आपके प्रश्न का उत्तर देने में मदद करने की कोशिश कर सकता हूं? –

+0

मैंने अपने प्रश्न में एक पूर्ण कोड पर एक लिंक अपडेट किया है। कार्यक्षमता के लिए कोई दस्तावेज़ नहीं हैं क्योंकि यह एसओ चैट आंतरिक है। – PeeHaa

+2

इस पर विस्तार करने के लिए ... कैसे ... 'नया ऑडियो (chrome.extension.getURL (" so.mp3 "))। Play(); 'और so.mp3 http: //or.cdn से आता है। sstatic.net/chat/so.mp3 – PAEz

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