9

मैं चाहता हूं कि मेरा फेसबुक कैनवास ऐप संदर्भ बदलते समय पता बार यूआरएल को अपडेट करने में सक्षम हो। तो, उदाहरण के लिए, यदि मेरे ऐप का होम यूआरएल https://apps.facebook.com/myapp/ है, और उपयोगकर्ता होम स्क्रीन पर कुछ आइटम पर क्लिक करता है, तो मुझे पता बार में यूआरएल https://apps.facebook.com/myapp/1/ या https://apps.facebook.com/myapp/#1 में बदलने के लिए यूआरएल चाहिए।क्या फेसबुक कैनवास में पैरेंट विंडो को pushState() करने का कोई तरीका है?

आम तौर पर, मेरा ऐप एचटीएमएल 5 के history.pushState() के साथ ऐसा कर सकता है। समस्या यह है कि कैनवास ऐप एक आईफ्रेम के अंदर चलता है, और पैरेंट विंडो के pushState तक नहीं पहुंच सकता है (क्योंकि iframe ऐप.facebook.com के समान डोमेन नहीं है)। एक और तकनीक को पते के केवल हैश भाग को बदलना चाहिए, यानी window.location.hash = "1", लेकिन इसी कारण से, iframe के भीतर भी यह संभव नहीं है।

यह पूरे पृष्ठ को फिर से लोड के साथ माता-पिता पृष्ठ URL को बदलने के लिए उपयोग कर रहा

window.parent.location = "https://apps.facebook.com/myapp/1/" 

हालांकि द्वारा संभव है, इस पैरेंट पृष्ठ, पुनः लोड सेकंड की अच्छी संख्या को ले जा रही है, और फिर पुन: लोड करने का कारण होता है iframe - सब कुछ, उपयोगकर्ता के लिए एक बहुत लंबा और निराशाजनक अनुभव।

क्या ऐसा करने का कोई तरीका हो सकता है मैंने सोचा नहीं है?

उत्तर

3

मुझे यकीन है कि फेसबुक के अंत से विशेष सहायता के बिना ऐसा करने का कोई तरीका नहीं है। उदाहरण के लिए फेसबुक कैनवास पृष्ठ पर एक स्क्रिप्ट लागू कर सकता है जो आपके आईफ्रेम से क्रॉस-डोमेन संदेशों को सुनने के लिए postMessage (https://developer.mozilla.org/en-US/docs/DOM/window.postMessage) का उपयोग करता है।

लेकिन फेसबुक से सहयोग के बिना, मुझे नहीं लगता कि कोई आधुनिक, मानक ब्राउज़र आपको ऐसा करने की अनुमति देगा।

+0

आप सही हैं। दुर्भाग्यवश, फेसबुक एपीआई में ऐसी विधि नहीं है, भले ही आईएमएचओ यह जोड़ने के लिए एक आसान तरीका है, यह मानते हुए कि डोमेन उपसर्ग मैचों की पुष्टि करना XSS के खिलाफ पर्याप्त सुरक्षा है। यदि आपको लगता है कि आप अपने उपयोग के लिए उपयोगी एपीआई पा सकते हैं, तो कृपया इसके लिए एफबी के साथ वोट दें: https://developers.facebook.com/bugs/133461353503702 – onon15

+1

इसे +1 किया। ऐसा लगता है कि वे इसे अभी "इच्छासूची" पर छोड़ रहे हैं। –

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