2009-10-20 13 views
17

मेरे पास मेरे पृष्ठ के लिए निम्न जावास्क्रिप्ट पुस्तकालय लोड हैं।फ़ायरफ़ॉक्स फ़ायरफ़ॉक्स में काम करता है जब फ़ायरबग चल रहा है, तब काम नहीं करता है जब फ़ायरबग नहीं चल रहा है

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript" src="http://cdn.jquerytools.org/1.1.2/jquery.tools.min.js"></script> 
<script type="text/javascript" src="./js/jquery.scrollTo-min.js"></script> 

मैं div तत्व है कि मैं उन्हें रखते हैं करना चाहते हैं:

<div class="content" id="content"> 
</div> 

मैं इस लिंक है:

<a id="changeText" href="rules.html">Click to change</a> 

अंत में, मैं निम्नलिखित jQuery कोड है:

<script> 

$(document).ready(function() { 
$("#changeText").click(function(){ 

    var url = $(this).attr("href"); 

    $("#content").load(url); 

    console.log(url); 

    $.scrollTo("0%", 400); 
}); 
}); 
</script> 

यह सब सफार में काम करता है मैं। कहानी का सबसे अजीब हिस्सा यह है कि फ़ायरबग चालू होने पर यह केवल फ़ायरफ़ॉक्स में काम करता है। जब फ़ायरबग चालू नहीं होता है, तो पृष्ठ गतिशील रूप से लोड होता प्रतीत होता है, लेकिन तब पृष्ठ नियम.html लोड करता है और इसे स्विच करता है, जो मेरा वांछित लक्ष्य नहीं है।

इसके अलावा, इनमें से कोई भी IE8 में काम नहीं करता है।

मैं क्या गलत कर रहा हूं?

उत्तर

29

बेहतर होगा कि तुम लपेट चाहते हैं सब अपने

console.log(...) 

if (window.console) { 
    console.log(...); 
} 
+0

+1 मुझे यह जवाब पसंद आया क्योंकि यह एक कार्य-आसपास की पेशकश करता है जो दोनों परिदृश्यों को ठीक से काम करने की अनुमति देगा। –

+4

मैं ऐसा कुछ करता हूं जहां मेरे पास लॉग() नामक एक फ़ंक्शन है जो जांच करेगा कि window.console उपलब्ध है या नहीं और यदि ऐसा है तो आदेश लॉग करें। – Shard

+0

मेरा दिन बचाया। हालांकि फ़ायरफ़ॉक्स 4.0 पर यह ठीक है :) –

11

console.log बाहर निकालें, फ़ायरबग चलने पर यह अनिर्धारित है।

+0

मैं भी जोड़ने की जरूरत: वापसी झूठी; मेरे फ़ंक्शन के अंत में । अन्यथा ब्राउज़र नियम.html – Tylo

+0

हाँ लोड करेगा, कंसोल ऑब्जेक्ट केवल सफारी और फ़ायरफ़ॉक्स में मौजूद है जब फ़ायरबग चालू है। आपको console.log कॉल को बाहर करने की आवश्यकता है। – ohdeargod

+0

और अधिक आम तौर पर: समस्याओं को डीबग करने के लिए त्रुटि कंसोल में देखें, यह आपको बताया होगा कि कोई console.log() नहीं था। – Nickolay

0

में इसके अलावा वहाँ दिलचस्प परियोजना कहा जाता fauxconsole है: एक Firebug का अनुकरण करना, सफारी या ओपेरा डिबगिंग कृत्रिम कंसोल के साथ माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर में सांत्वना

1

यह देखने के लिए जांचें कि क्या इसका उपयोग करने से पहले आपके पास कंसोल है या नहीं।

बाइंड एक बूलियन चर तो:

var hasConsole = (typeof console != 'undefined' && typeof console.log != 'undefined'); 

और सांत्वना के लिए लिख पहले यह जाँच:

if (hasConsole) { 
     console.log("This is safe."); 
    } 

इस तरह से जब तुम अपने आप डिबग संदेश प्राप्त Firebug को चालू करना और जब आप इसे चालू अपनी स्क्रिप्ट से अभी भी काम करते हैं।

1

आप गायब लॉगिंग कार्यों को मुखौटा करने के लिए निम्न कोड का उपयोग कर सकते हैं।

if (typeof console === "undefined") { 
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", 
    "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; 

    window.console = {}; 
    for (var i = 0; i < names.length; ++i) 
     window.console[names[i]] = function() {} 
} 
संबंधित मुद्दे