2008-09-26 23 views
5

के आस-पास एक फ्रेम (टूलबार) को ग्रेस से बंद करना मैंने एक ऐसा टूल बनाया है जिसका उपयोग काफी लोकप्रिय संगीत खुदरा विक्रेता के साथ किया जाता है।एक आईफ्रेम

उपकरण एक उन्नत खोज सुविधा प्रदान करता है (पारदर्शी last.fm परिणाम, कोई विज्ञापन नहीं, कोई लापरवाही नहीं, कुछ भी डरावना नहीं है) और मुझे खोज को प्रदर्शित करने का सबसे उपयोगी और अविभाज्य तरीका है जो बहुत खराब तरीके से टूलबार के रूप में है iframe। यह उपयोगकर्ताओं को उपयोगकर्ताओं के ध्यान को चुराए बिना खोज लोड करने की अनुमति देता है।

आईफ्रेम के विशेष रूप से बड़े प्रशंसक नहीं होने के कारण मैंने सोचा कि "इस फ्रेम को बंद करें" (एला Google छवि खोज) लिंक जोड़ने के लिए उपयोगकर्ताओं को तेज़ी से और आसानी से अपने ब्राउज़र पर नियंत्रण प्राप्त करने की अनुमति मिल जाएगी।

हालांकि Google के विपरीत, मुझे नहीं पता कि iframe में सामग्री का स्थान क्या है (केवल जहां यह प्रारंभ हुआ, src के माध्यम से)।

तो अब मैं खुद को एक्सएसएस और सभी सुरक्षा संबंधी चिंताओं की दुनिया में ढूंढता हूं।

जावास्क्रिप्ट का उपयोग करके मैंने अभिभावक में लिंक से बुलाए गए इतिहास ऑब्जेक्ट के साथ 'बैक' और 'फॉरवर्ड' बटन जोड़े हैं (जब कोई उपयोगकर्ता आईफ्रेम में परिणाम लोड करता है, तो बैक बटन उन्हें जाने देता है खोज परिणामों का उपयोग करके/उपयोग करने के बाद प्राथमिक साइट पर वापस जाएं)।

क्या आईफ़्रेम के भीतर वर्तमान स्थान को कॉल करने और उस स्थान पर पृष्ठ (अब सैन्स फ्रेम) को फिर से लोड करने का कोई तरीका है?

मैंने भाग्यशाली हो सकता है यह देखने के लिए मैंने PHP $ ग्लोबल/$ _ सर्वर परिवर्तक की जांच की है। मैं समझता हूं कि सुरक्षा चिंताओं हैं, लेकिन मुझे नहीं लगता कि यह विशेष कार्य कैसे अलग होगा, तो history.back() जहां ब्राउज़र मेरे माता-पिता फ्रेम को 'सूचित' किए बिना कॉल करता है।

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

ऐसा लगता है कि फ़्रेम को विंडोज़ चोरी करने के लिए डिज़ाइन किया गया है, जिसमें 'ब्रेक आउट' और उपयोगकर्ता सत्र की अखंडता को संरक्षित करने के लिए कोई साधन नहीं है।

कोई आश्चर्य नहीं कि लोग उन्हें नफरत करते हैं। :)

+0

मुझे यकीन है कि अगर मैं सही ढंग से समझ। आप मुख्य दस्तावेज़ के नियंत्रण में है नहीं कर रहा हूँ, आप एक में बाहरी दस्तावेज प्रदर्शित कर रहे हैं iframe, और आप मुख्य दस्तावेज़ को आईफ्रेम में जो कुछ भी मुख्य मुख्य दस्तावेज़ के रूप में लोड करना चाहते हैं? और आपके पास iframes में दस्तावेज़ों से कोई सहयोग नहीं है? – Jim

उत्तर

2

Google छवि खोज जब आप फ्रेम यह काम करता है को हटाने के रूप में आप वर्तमान में मूल फ्रेम स्रोत पर वापस जाकर, प्रस्ताव पर। एक्सएसएस कारणों के लिए, वर्तमान स्थान ढूंढना संभव नहीं होना चाहिए, और यदि यह था तो इसे एक बग माना जाएगा और बाद के ब्राउज़र पैच में तय किया जाएगा, इसलिए यदि कोई अस्तित्व में है तो इस तरह के क्विर्क पर भरोसा करना सबसे अच्छा नहीं हो सकता है। स्थान प्रकट किए बिना खूबसूरती से बाहर निकलने का एक तरीका अच्छा होगा, हालांकि। यह कुछ ऐसा हो सकता है जिसे आप HTML5 समूह में प्रस्तावित कर सकते हैं।

0

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

0

मैं आप दोनों (hal10001) और ज़ैच को जवाब देने का समय लेता हूं। ऐसा लगता है कि मैं xss सुरक्षा चिंताओं के कारण चूस रहा हूं (जैसा कि मुझे संदेह है)।

मुझे लगता है मैं बस लपेट सकता है सभी एक php आधारित प्रॉक्सी के भीतर सामग्री है, लेकिन यह स्पष्ट रूप से डरावने क्षेत्र में प्रवेश होता है, जोड़ा विलंबता और क्या-का उल्लेख नहीं करने के लिए नहीं।

मैं इस विचार को कताई रखूंगा कि मैं कुछ सन और उपयोग करने योग्य हूं, लेकिन तब तक मुझे लगता है कि मैं मूल फ्रेम को बढ़ावा देने और उनके वर्तमान स्थान को मिटा देने के थोड़ा कम स्वतंत्र दृष्टिकोण का उपयोग करूंगा (और यदि वे पसंद नहीं है मैं iframe/उपकरण पट्टी स्थिति फिर से मिलना कर सकते हैं।

बार फिर धन्यवाद!

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