2013-04-16 27 views
9

यहाँ दोषी टुकड़ा एक तीसरी पार्टी lib से निकाली गई है:लेखन त्रुटि: संपत्ति अशक्त की 'सांत्वना' पढ़ा नहीं जा सकता

function hasConsoleLogger() { 
    return window.console && window.console.log; 
} 

कुछ भी नहीं फैंसी, लेकिन यह आश्चर्यजनक रूप से प्रस्तुत करती है: TypeError: Cannot read property 'console' of null

यह एक ब्राउज़र में मार डाला है संदर्भ (क्रोम) तो कोई Node.js गैर खिड़की सामान शामिल नहीं है।

मैंने बिना किसी सफलता के संभावित दुर्भावनापूर्ण delete window या window = null की जांच की है।

एप्लिकेशन जहां यह बग दोस्ताना iFrames, और document.write() कॉल के साथ चलता है।

दुर्भाग्य से मैं इस मुद्दे का कोई डेमो लिंक प्रदान नहीं कर सकता।

तो मुझे लगता है कि मेरा प्रश्न है "ब्राउज़र में गलती से विंडो ऑब्जेक्ट को निरस्त या पहुंचने योग्य कैसे हो सकता है?"

+0

मैं बस करने की कोशिश की: 'खिड़की = बातिल; '; यह क्रोम में चुपचाप विफल रहा। आईएमओ, इस तरह के असाइनमेंट को रोकने के लिए पर्याप्त स्मार्ट है। – SuperSaiyan

+0

क्या यह वैश्विक दायरे में है या एक समारोह के भीतर है? – user2264587

उत्तर

4

जब एक खिड़की बंद कर दिया है, क्रोम पहले सेट window.console, windownull है तो।

निम्नलिखित कोड मज़बूती से त्रुटि पुन: पेश करेंगे, एक समारोह जो एक अलग संदर्भ से window का संदर्भ बनाने के द्वारा:

var w = window.open('/'); 
// Using document.write to run code in the context of the other window 
w.document.write('<script>opener.func = function(){return window;};</script>'); 
w.close(); 
// Naive timer to wait for Garbage collection 
setTimeout(function() { 
    console.log(func() === null); // true 
}, 100); 
संबंधित मुद्दे

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