मुझे लगता है कि window.onerror
के साथ समस्याएं थीं जो वेबकिट (https://bugs.webkit.org/show_bug.cgi?id=8519) में ठीक से काम नहीं कर रही थीं। यह नहीं पता कि यह बिल्कुल तय किया गया है, और यदि ऐसा है, तो क्यूटी वेबकिट संस्करण पहले से ही अद्यतित है।
हालांकि, आपको अपने कोड में दिए गए अपवादों को पकड़ने में सक्षम होना चाहिए। यदि आप अपना कोड चलाने के लिए webPage.evaluate(...)
जैसे कुछ उपयोग कर रहे हैं, तो आप एक पूर्ण संदर्भ में स्क्रिप्ट का मूल्यांकन करने के बाद से पूरी कॉल को एक कोशिश/पकड़ ब्लॉक में लपेट नहीं सकते हैं और त्रुटियां मुख्य निष्पादन संदर्भ में प्रकट नहीं होंगी। इसके बजाय आपको पेज निष्पादन संदर्भ में त्रुटियों को पकड़ने की आवश्यकता होगी। दुर्भाग्यवश, मुख्य संदर्भ में परिभाषित किसी भी फ़ंक्शन तक पहुंचने का कोई तरीका नहीं है, इसलिए हमें निष्पादित होने के लिए आपके कोड के चारों ओर रैपिंग कोड स्पष्ट रूप से लिखना होगा।
निम्नलिखित phantomwebintro.js
फ़ाइल का एक संशोधित उदाहरण है जो फ़ैंटॉमजेएस स्रोत में शामिल है। यह एक HTML पृष्ठ लोड करता है, एक स्क्रिप्ट सम्मिलित करता है और फिर पृष्ठ संदर्भ में कुछ कोड चलाता है (यहां एक प्रकार की त्रुटि फेंकने वाली रेखा के साथ)। यह कोड एक कोशिश/पकड़ ब्लॉक के साथ लपेटा गया है और मुख्य संदर्भ में लपेटा परिणाम या त्रुटि वस्तु वापस कर देगा।
...
// Load an HTML page:
page.open("http://www.phantomjs.org", function(status) {
if (status == "success") {
// Inject some scripts:
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
// Run your own code in the loaded page context:
var resultWrapper = page.evaluate(function() {
var wrapper = {};
try {
// Your code goes here
// ...
var x = undefined.x; // force an error
// store your return values in the wrapper
wrapper.result = 42;
} catch(error) {
wrapper.error = error;
}
return wrapper;
});
// Handle the result and possible errors:
if (resultWrapper.error) {
var error = resultWrapper.error;
console.log("An error occurred: " + error.message);
// continue handling the error
// ...
} else {
var result = resultWrapper.result;
// continue using the returned result
// ...
}
...
});
}
});
...
स्रोत
2011-12-29 18:13:14
मुझे लगता है कि आप 'window.onerror' फ़ंक्शन को परिभाषित करना चाहते हैं, है ना? –
यूप, तय। धन्यवाद! –