2015-11-18 12 views
8

में अपेक्षित काम नहीं कर रहा है फ़ायरफ़ॉक्स में यह इनलाइन जावास्क्रिप्ट क्यों काम नहीं करता है? और मैं इसे फ़ायरफ़ॉक्स में सही ढंग से काम करने के लिए कैसे प्राप्त कर सकता हूं?'href' में इनलाइन जावास्क्रिप्ट फ़ायरफ़ॉक्स

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <style> 
     h2 {display:inline; padding:0px 7px 0px;} 
     h2 a {text-decoration:none} 
     h2 a:link {color:#FFFFFF;} 
     h2#s0 {background-color:black;} 
    </style> 
</head> 
<body> 
    <h2 id="s0"><a href="javascript:document.getElementById('d0').style.display='block';"> 
Click me!</a></h2> 
    <div id="d0" 
style="width:98%;border: 5px solid #000000;padding:3px; display:none;"> 
When you click the heading, this text should appear with a black 
outline, with no gap between that and the heading background.</div> 
</body> 
</html> 

सफारी में ऐसा लगता है कि ऐसा होना चाहिए। फ़ायरफ़ॉक्स में यह क्षणिक रूप से एक अंतर के साथ प्रकट होता है (जैसे कि ब्राउज़र क्विर्क मोड में है) तो पेज पर सब कुछ गायब हो जाता है, जिसे "ब्लॉक" शब्द से बदल दिया जाता है। सबसे पहले मैंने सोचा था कि फ़ायरफ़ॉक्स इसे अवरुद्ध कर रहा था, लेकिन यह कहता है कि अगर मैं शैली को प्रदर्शित करने के लिए सेट करता हूं तो यह "इनलाइन" कहता है।

संपादित करें: मेरी समस्या का जावास्क्रिप्ट हिस्सा अब हल हो गया है। लेकिन शीर्षक की पृष्ठभूमि दिखाई देने के तरीके में अभी भी एक अंतर है: यह सफारी में div सीमा तक फैलता है, लेकिन फ़ायरफ़ॉक्स में नहीं। फ़ायरफ़ॉक्स में ऐसा करने का कोई तरीका है?

+3

हा हा हा - यह प्रश्न शीर्षक क्लासिक है !! –

+0

यह विंडोज़ पर फ़ायरफ़ॉक्स 42 में मेरे लिए काम करता है। आप कौन सा संस्करण उपयोग कर रहे हैं? साथ ही, क्या कोई एक्सटेंशन चल रहा है? – gfullam

+0

ओह, आपको पहले बटन पर क्लिक करना होगा। आपने उस निर्देश को अपनी पोस्ट से बाहर कर दिया है। – gfullam

उत्तर

1

ओएसएक्स फ़ायरफ़ॉक्स संस्करण 41.0.1 पर मैंने भी एक ही समस्या का अनुभव किया। मैं क्यों यह काम नहीं करता पता नहीं है, यह फ़ायर्फ़ॉक्स में एक बग हो सकता है, लेकिन आप इस में कुछ ऐसी ही काम कर समाधान के लिए कर सकते हैं:

<a href="#" onclick="document.getElementById('d0').style.display='block';"> 
+0

एक «#» href में जोड़ें वर्तमान पृष्ठ के शीर्ष पर स्क्रॉल करने के लिए कुछ ब्राउज़र को मजबूर करें (उदाहरण के लिए आईई) तो यह एक अच्छा अभ्यास नहीं है। –

3

इस के साथ अपने लिंक बदलें:

<a href="javaScript: void(0);" onclick="javascript:document.getElementById('d0').style.display='block';"> 

जहां तक ​​मैं इसे समझता हूं, फ़ायरफ़ॉक्स यदि आप जावास्क्रिप्ट कॉल को href विशेषता में डालते हैं तो एक यूआरएल खोलने का प्रयास करता है। (जैसा कि आप अपने स्थान पट्टी में देख सकते हैं) इसे onclick में डालकर इसके बजाय यह ठीक काम करता है।

मैं a href="javaScript: void(0);" काम करता है ठीक लगता है कि आप भी कुछ preventDefault या इस तरह इस्तेमाल कर सकते हैं, और आप भी a href="#" की कोशिश कर सकते हैं, लेकिन और सभी ब्राउज़रों मैं अब तक का परीक्षण किया है के माध्यम से मजबूत है।

+0

शायद सिर्फ एक टाइपो लेकिन मेरा मानना ​​है कि ऑनक्लिक केस संवेदनशील है। – AtheistP3ace

+0

धन्यवाद, @ नाथिस्टपैस, मैंने इसे बदल दिया, और आधिकारिक तौर पर यह सब कम मामला है जैसा आपने कहा था, हालांकि कैमेलकेस मेरे सिस्टम पर काम करता है। – Burki

+1

हाँ मुझे लगता है कि कुछ ब्राउज़र दूसरों की तुलना में अधिक क्षमा कर रहे हैं। =] – AtheistP3ace

7

तुम्हारे पास क्या है के निकटतम काम कर रहे रूप है:

<a href="javascript:void(document.getElementById('d0').style.display='block');"> 

Because:

जब एक ब्राउज़र एक javascript: यूआरआई इस प्रकार है, यह यूआरआई में कोड का मूल्यांकन और उसके बाद की जगह मूल्य के साथ पृष्ठ की सामग्री, जब तक लौटाया गया मूल्य undefined नहीं है। void ऑपरेटर undefined वापस करने के लिए उपयोग किया जा सकता है।

onclick यहां बेहतर विकल्प है।

+0

धन्यवाद एलेक्स और @ बुर्की। इसने जावास्क्रिप्ट समस्या हल कर दी है। –

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