2012-04-12 20 views
8

के बावजूद आईई में छुपा पाठ का चयन किया जा सकता है यह एक आईई-विशिष्ट 'फीचर' प्रतीत होता है। मैंने IE8 का उपयोग करके परीक्षण किया। उपयोगकर्ता आईई 6 और आईई 7 में पुष्टि करके योगदान दे रहा है।स्टाइल = 'डिस्प्ले: कोई भी'

मैं कुछ पाठ कि मेरे पेज में और तत्व की रचना की शुरुआत यह है style = "display: none;"

मैं jQuery का उपयोग नहीं पाठ छिपाने के लिए और पाठ नहीं 'दिखा' है से बनाया जाता है। हालांकि, आगे के प्रकटीकरण के लिए, मैं jQuery की .html() विधि का उपयोग कर तत्व की सामग्री तक पहुंचता हूं।

हालांकि, यदि उपयोगकर्ता पास मेरा display:none तत्व चुनता है और प्रतिलिपि बनाई गई प्रतिलिपि बनाता है, तो छुपा पाठ शामिल हो जाता है। जैसे कि यह सामान्य रूप से प्रदर्शित किया गया था।

मार्कअप इस तरह दिखता है:

... 
<td align="left"> 
    Text they should see 
    <div id="whateverButUnique" style="display:none;">Value I want hidden</div> 
    Some other text 
</td> 

यहाँ एक fiddle वह जगह है जहाँ मैं IE < 9.

का उपयोग करते समय यह इस विशेष आवेदन के लिए एक गंभीर चिंता का विषय नहीं है इस मुद्दे को दोबारा सकते हैं, यह पकड़ा मुझे ऑफ-गार्ड और मुझे आश्चर्य हुआ कि यह एक 'फीचर' है या अगर मैं कुछ गलत तरीके से कर रहा था।

other questions में से अधिकांश मैंने display:none के बारे में देखा है जो उनके पोस्टर की सामग्री को दृश्यमान थे। दोबारा, मेरी सामग्री अनिवार्य रूप से अदृश्य चयनित, प्रतिलिपि बनाई गई और अंततः चिपका दी गई है।

क्या मैं इंटरनेट एक्सप्लोरर उपयोगकर्ताओं को प्रतिलिपि/चिपकाने से इस सामग्री को ढूंढने से रोक सकता हूं? मुझे एहसास है कि वे इसे डेवलपर टूल्स में देख सकते हैं और स्रोत देखकर देख सकते हैं।

अद्यतन: अन्य उपयोगकर्ताओं की टिप्पणियों के लिए धन्यवाद, मैं भी visibility:hidden और z-index=-1 की शैली लागू की कोशिश की है। उपयोगकर्ता ने कई अन्य छुपा प्रयासों की कोशिश की है लेकिन आईई इस सुविधा को फिसलने की इजाजत देने के लिए अब तक दृढ़ है। सभी बेहतरीन सुझावों के लिए धन्यवाद!

अद्यतन:Heather Walters पूछने के लिए धन्यवाद; पृष्ठ पर उपयोग करने के लिए मुझे जो मूल्यों का उपयोग करने की आवश्यकता है, वे केवल सर्वर-साइड उपलब्ध हैं लेकिन मैं उन्हें का उपयोग पृष्ठ के बाद jQuery/AJAX के माध्यम से किसी बाहरी प्रोग्राम से अतिरिक्त प्रोसेसिंग का उपयोग करके लिंक उत्पन्न करने के लिए करता हूं। इसलिए मैं छिपे हुए मूल्यों के साथ पृष्ठ का निर्माण करता हूं लेकिन फिर उन छिपे हुए मूल्यों पर उनके साथ कुछ उपयोगी बनाने के लिए काम करता हूं।

एक बार जब मैं कुछ उपयोगी बनाने के लिए उनका उपयोग कर रहा हूं, हालांकि, अब मुझे एहसास हुआ कि मैं उन्हें jQuery के माध्यम से बाहर निकाल सकता हूं और अतिरिक्त प्रदर्शन हिट कर सकता हूं। निम्नलिखित कोड हर किसी के लिए यह पूरा होता है कि सक्षम जावास्क्रिप्ट गया है:

$("[id^=whateverButUnique]").html(""); 

संभावित पृष्ठ के तत्वों के सैकड़ों के साथ इस अतिरिक्त संसाधन आदर्श नहीं है।

vega, मुझे विश्वास नहीं है कि this solution मेरे लिए काम करेगा क्योंकि मुझे सर्वर की तरफ पेज और मेरी छिपी सामग्री बनाना है।वे सभी सर्वर-साइड लूप में संभावित रूप से सैकड़ों अन्य तत्वों के साथ निर्मित किए गए हैं, इसलिए मेरे पास या तो इसे बनाने के लिए विकल्प है जबकि सर्वर एक टेबल में सब कुछ बिछा रहा है (छुपा तत्व शामिल है) या दूसरी बार इसके माध्यम से लूप (दर्दनाक) और तत्वों को प्रदर्शित करने के लिए मजबूर करने का प्रयास करें: कहीं भी कहीं भी कम होने की संभावना नहीं है।

Ohgodwhy, मैं आपके समाधान में विश्वास करना चाहता था। आईई 8 में, छुपा क्षेत्र नोटपैड में दिखाई नहीं दिया; हालांकि, मैं अनुभाग की प्रतिलिपि बनाने और इसे माइक्रोसॉफ्ट वर्ड में पेस्ट करने में सक्षम था। यह अब छुपा नहीं था।

काम पर एक और कारक: यह पृष्ठ पहले से ही बहुत ही जावास्क्रिप्ट भारी है इसलिए मुझे उम्मीद थी कि मुझे एक समाधान मिल सकता है जो आईई को 100+ संभावित तत्वों के माध्यम से एक और पास जोड़ने के बिना मूल्यों को देखने से रोक देगा ... लेकिन मेरे पास अभी हो सकता है सेवा मेरे।

अद्यतन: Robin Maben के सुझाव लगता है कि उस महान वैकल्पिक हल हो जाएगा! उनका सुझाव data-x कस्टम एचटीएमएल 5 विशेषता में मूल्यों को छिपाना है। यह मेरे (सबसे अधिक संभावना) गैर एचटीएमएल 5 अनुपालन पृष्ठ के बावजूद काम कर रहा प्रतीत होता है। अगर आप इसे एक महत्वपूर्ण योगदान भी मानते हैं तो कृपया उसका उत्तर दें।

अद्यतन: पुष्टि की गई। मैंने मैबेन के सुझाव को सफलतापूर्वक कार्यान्वित किया है और इसलिए मेरे पृष्ठ पर प्रत्येक तत्व के लिए डीओएम लुक-अप की संख्या को कम करने में सक्षम हैं। मैं उन सभी वस्तुओं के साथ पहले से ही डीआईवी के माध्यम से लूपिंग कर रहा था जिन्हें मैं दिखाना चाहता था, और अब मैं एक ही समय में डेटा प्रॉपर्टी को स्वचालित रूप से एक्सेस कर सकता हूं। यह मेरा कार्यान्वयन में इस तरह दिखता है:

<div style="display:none" data-call-number="..." id="stackLocatorLinkFillUp...">...</div> 

अंडाकार से संकेत मिलता है अद्वितीय करने के लिए मुझे आपरेशन चल रहा है। आईडी में एक साधारण संख्यात्मक संकेतक है जो प्रति रिकॉर्ड एक में वृद्धि करता है।

// Loop through all of the items on the page that start with my id 
$("[id^=stackLocatorLinkFillUp]").each(function() { 
    // ... 
    // Grab the contents of the div 
    var innerContent = $(this).html(); 
    // Extract the call number out of the data-call-number field 
    var callNumPreEncoded = $(this).data("callNumber"); 
    // ...eventually... 
    $(this).html(...).css("display","block"); 
}); 

सभी को धन्यवाद!

+0

मुझे याद है कि तत्वों को छिपाने की कोशिश कर रहे आईई-विशिष्ट समस्याएं हैं। क्या आपने "दृश्यता: छुपा" का उपयोग करने की कोशिश की है? – McGarnagle

+2

मैं आईई 6, आईई 7 और आईई 8 के लिए इस व्यवहार को पुन: उत्पन्न कर सकता हूं। IE9 व्यवहार करेगा जैसा कि आप उम्मीद करेंगे (उम्मीद है)। मुझे लगता है कि वे सिर्फ दस्तावेज़ में एक सामान्य तत्व के रूप में इसका इलाज कर रहे हैं जो इसे कॉपी करने की अनुमति देता है। मुझे पता नहीं है कि इसके आसपास कोई रास्ता है या नहीं। मैंने तत्व ऑफ-स्क्रीन को पोजीशन करने की कोशिश की लेकिन उसने कुछ भी नहीं बदला। अगर कोई काम के आसपास जानता है तो दिलचस्प होगा। –

+0

धन्यवाद @dbaseman; अब तक मैंने कोशिश की है, प्रदर्शित करें: कोई नहीं, दृश्यता: छुपा, और जेड-इंडेक्स = -1 लेकिन टेक्स्ट अभी भी बफर में कॉपी हो सकता है। @ जॉन एच, आपकी पुष्टि के लिए धन्यवाद। यह दिलचस्प होगा! – veeTrain

उत्तर

3

तत्व का आकार प्रदर्शित करने और स्थिति का कोई फर्क नहीं पड़ता, यह चुना जा रहा है क्योंकि जब आप IE < 9 में चीजों का चयन करते हैं, तो आप HTML का चयन कर रहे हैं और फिर उस HTML को छिपे हुए तत्वों के साथ चिपका रहे हैं। IE9 और अन्य ब्राउज़र चयन से उन छुपे तत्वों को ठीक से हटा दें। का एकमात्र तरीका यह है कि मुझे पता है ताकि यह डोम में छुपा तत्व न हो।

+0

संक्षिप्त प्रतिक्रिया के लिए केविन धन्यवाद; मेरा मानना ​​है कि आपने मूल प्रश्न का सही उत्तर दिया है और इसलिए मैंने इसे उत्तर के रूप में गिना है। हालांकि, उन सभी के लिए जो एक समान स्थिति में हो सकते हैं और चाहते हैं एक विकल्प जब आईई में चयन/प्रतिलिपि/पेस्ट से उनके div को छुपाया नहीं जाता है <9, @ रॉबिनमैबेन की पोस्ट नीचे देखें। अब मेरे पास एक कम div है और इसलिए एक कम डोम लुकअप है। – veeTrain

0

मुझे लगता है कि अगर आप का उपयोग बेहतर है:

position: absolute; left: -10000px; 

कि किसी भी संभावित आईई समस्याओं को खत्म होगा।

+0

मैं अभी भी अपने विचार के साथ छुपा पाठ कॉपी/पेस्ट कर सकता हूं। [यहां] देखें (http://jsfiddle.net/zexC6/5/)। – veeTrain

+0

मैं अभी भी आईई 8 के माध्यम से अपने लाइव वातावरण में टेक्स्ट देख सकता हूं। आपके सुझाव के लिए धन्यवाद – veeTrain

6

क्या आपने visibility:collapse संपत्ति का प्रयास किया है?

"Value I want hidden" भाग कम्प्यूटेशनल प्रयोजनों के लिए विशुद्ध रूप से प्रयोग किया जाता है, तो आप "data" विशेषता का उपयोग करना चाहिए।

इस

<div data-custom-value="1001">Visible value </div> 

jQuery में की तरह, एचटीएमएल डेटा विशेषताओं data() एपीआई के माध्यम से स्वचालित रूप से उपलब्ध हैं।

आप

someElement.data('customValue') एक मूल्य के पढ़ने के लिए कर सकते हैं।

और

someElement.data('customValue', newValue) एक मूल्य निर्धारित करने के लिए।

आशा है कि मैंने आपकी समस्या का सही ढंग से विश्लेषण किया है।

+0

क्या आपका मतलब है कि मुझे शैली को इस प्रकार सेट करना चाहिए: 'style = 'display: none; दृश्यता: collapse''? इससे चुनने योग्य/कॉपी करने योग्य/पेस्टेबल होने का मुद्दा हल नहीं हुआ। – veeTrain

+0

सुझाव के लिए धन्यवाद। मैंने अभी तक दृश्यता के साथ बहुत अधिक प्रयोग नहीं किया है। अफसोस की बात यह है कि यह उपयोगकर्ताओं के लिए पाठ को कॉपी करने के इच्छुक उपयोगकर्ताओं के लिए कम उपलब्ध नहीं है (आईई <9 में)। – veeTrain

+0

@veerain: देखें कि मेरा संपादन आपकी समस्या का समाधान करता है या नहीं। –

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