2012-01-20 19 views
34

मैं अपने पन्ने पर एक फ्लैश वीडियो है इस प्रकार है:Uncaught त्रुटि: NPObject पर त्रुटि बुला विधि

<script type="text/javascript"> 
var flashvars = { 
}; 
var params = { 
    movie: "VideoMain.swf", 
    quality: "high", 
    bgcolor: "#000000", 
    allowScriptAccess: "always", 
    wmode: "transparent" 
}; 
var attributes = { 
    id: "VideoMain", 
    name: "VideoMain", 
    classid: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", 
    width: "100%", 
    height: "100%" 
}; 
swfobject.embedSWF("./video/VideoMain.swf", "myVideoContent", "100%", "100%", "11.0.0","", flashvars, params, attributes); 
</script> 

<div id="myVideoContent"> 
    <h1>Oooppsss....you need flash or a newer version of flash</h1> 
    <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p> 
</div> 

ऊपर #VideoMain

तो मैं निम्नलिखित है में संलग्न हो जाता है:

$('#X.click').click(function(e) { 
    var flash = document.getElementById("VideoMain"); 
    flash.sendToActionScriptPublishVideo(true); 
}); 

यह कंसोल त्रुटि के साथ विफल:

+०१२३५१६४१०६१
Uncaught Error: Error calling method on NPObject. 
(anonymous function) 
jQuery.event.dispatchjquery.js:3256 
jQuery.event.add.elemData.handle.eventHandlejquery.js:2875 

कोई विचार क्या गलत हो सकता है? धन्यवाद

उत्तर

73

NPObject ब्राउज़र के माध्यम से उजागर किए गए किसी भी "विदेशी" कोड का एक "इंटरफ़ेस" है (विदेशी, जावास्क्रिप्ट के लिए विदेशी रूप में, अन्यथा यह ब्राउज़र की अपनी ऑब्जेक्ट्स हो सकता है, उदाहरण के लिए वैश्विक विंडो ऑब्जेक्ट की तरह)। एम्बेडेड फ्लैश प्लगइन निश्चित रूप से इस "इंटरफ़ेस" को कार्यान्वित करेगा (इसलिए ब्राउजर इसे एक और एनपीओब्जेक्ट के रूप में देखता है)।

जब आप उस ऑब्जेक्ट पर कोई विधि कॉल करते हैं, तो ऐसे कई फ़ंक्शन होते हैं जो ऑब्जेक्ट को पास किए गए डेटा को क्रमबद्ध करने और ब्राउज़र के रनटाइम पर वापस कॉल करने के लिए कॉल करते हैं। यह निश्चित है कि वास्तव में काम नहीं किया क्या बताना मुश्किल है, लेकिन कुछ सामान्य कारण शामिल होंगे:

  1. प्लगइन का खुलासा नहीं करता (या अभी तक पंजीकृत नहीं किया) नाम आप कॉल करने के लिए कोशिश कर रहे हैं के साथ एक विधि।
  2. प्लगइन को इस तरह से एम्बेड किया गया था कि क्रॉसस्क्रिप्टिंग की अनुमति नहीं है (सीमाएं दोनों तरफ हो सकती हैं, फ्लैश की आवश्यकता है कि कॉल एक विश्वसनीय डोमेन से आता है और आप ऑब्जेक्ट में सेटिंग्स के माध्यम से पर्यावरण से संचार करने से प्लगइन को प्रतिबंधित कर सकते हैं टैग
  3. जावास्क्रिप्ट के माध्यम से लागू प्लगइन के कोड में फेंक दिया कोई त्रुटि -।।। मुझे यकीन है कि एक ही गलती होगी नहीं कर रहा हूँ, लेकिन यह बहुत ज्यादा होने की संभावना है
+2

तीसरा एक था जो मेरे लिए गलत हो रहा था - यदि आप फ्लैश का उपयोग कर रहे हैं, तो जेएस द्वारा बुलाए गए फ़ंक्शन में एक त्रुटि डाली जा रही है - 'try..catch' ब्लॉक का उपयोग करके या तो इसमें शामिल हो सकता है, या आपकी मदद कर सकता है समस्या को संकुचित करें जहां समस्या है ताकि आप इसे – divillysausages

+5

पर ठीक कर सकें। जब यह जेएस खुला फ्लैश विधि को कॉल करने का प्रयास कर रहा था तो मुझे यह त्रुटि मिली लेकिन उचित System.security.allowDomain()/System.security.allowinsecureDomain() को नहीं कहा गया था। यदि आप AllowDomain() को कॉल करते हैं तो सुनिश्चित करें कि आपका HTML उसी प्रोटोकॉल पर लोड हो गया है जैसे SWF (HTTPS या HTTP)। –

+2

4) जिस कॉलबैक को आप कॉलबैक के रूप में जोड़ते हैं, उसे स्कॉप्ड किया जाना चाहिए: सार्वजनिक 5) इस विधि को एक अनिर्धारित मान पास करने से यह संदेश (यदि आप फ्लैश में स्ट्रिंग की अपेक्षा करते हैं) – YopSolo

1

मैं एक ही त्रुटि संदेश मिल रहा था समस्या तब हुई जब फ्लैश ने एक बाहरी इंटरफेस कॉल किया जो फ्लैश क्रैश होने के बाद लौटा (जो भी कारण है)। मैंने जो फिक्स लागू किया था वह था: जांचें कि फ्लैश ऑब्जेक्ट अभी भी चल रहा है और चल रहा है और अगर कॉलबैक अभी भी उस वस्तु का एक कार्य है।

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

  • कोई संबंधित समस्या नहीं^_^