2010-01-24 18 views
11

मैं वर्तमान ब्राउज़र यूआरएल प्राप्त करने की कोशिश कर रहा हूं। मैंने पहले से ही बाहरी कॉल के साथ प्रयास किया है, और यह काम नहीं किया। और loaderInfo.url के साथ मुझे वर्तमान एसडब्ल्यूएफ यूआरएल प्राप्त होता है।वर्तमान ब्राउज़र यूआरएल प्राप्त करें - एक्शनस्क्रिप्ट 3

उत्तर

1

मैं आवश्यक जानकारी को फ़्लैशवार के रूप में पास करने का प्रयास करूंगा। मुझे पता है कि बॉक्स समाधान से सबसे अच्छा नहीं है, लेकिन यह काम करेगा।

Flash: FlashVars in AS3

+0

इस तकनीक के साथ एकमात्र समस्या फ्लैश अलग-अलग चरों में अलग कुछ यूआरएल तोड़ देगा। यह यूआरएल प्राप्त करने के साथ होता है, यानी: * .com? एक = 1 और दो = 2। इसलिए इस बात का ध्यान रखें! –

+0

@TylerEgeto आप एचटीएमएल विशेष वर्ण – Tchakabam

0

मुझे लगता है कि बाहरी इंटरफ़ेस का उपयोग एक जावास्क्रिप्ट window.location

15

साथ यह करने के लिए अपने posible के इस एक जाना दे दो:

import flash.external.ExternalInterface; 

var url:String = ExternalInterface.call("window.location.href.toString"); 
if (url) textfield.text = url; 

चाल करना चाहिए।

+0

मजाकिया चीज़ के साथ यूआरएल एन्कोड करके इसे ठीक कर सकते हैं, आप एचटीएमएल की आवश्यकता के बिना एक्शनस्क्रिप्ट के अंदर जावास्क्रिप्ट लिख सकते हैं। – atilkan

+0

ToString क्या करता है? क्या यह फ्लैश द्वारा जोड़ा गया एक फ़ंक्शन है? – Eddie

2

इस समस्या को हल करने के कुछ तरीके हैं, हालांकि उनमें से सभी ब्राउज़र को सीधे पूछने के लिए जावास्क्रिप्ट का उपयोग शामिल करते हैं।

इस समस्या को हल करने का मेरा पसंदीदा तरीका एक फ्लैशवार संपत्ति के माध्यम से यूआरएल प्रदान करना होगा, सीधे एम्बेड कोड से (व्यक्तिगत रूप से, मैं इसे आसान बनाने के लिए SWFObject का उपयोग करके पुनः प्राप्त करूंगा); भूलें कि आपको मार्कअप समस्याओं से बचने के लिए URL को एन्कोड करने की आवश्यकता होगी।

var flashvars = { 
    browserURL: escape(location.href) 
}; 
swfobject.embedSWF("myContent.swf", "myContent", "300", "120", "9.0.0", "expressInstall.swf", flashvars); 

अब आप loaderInfo वस्तु के माध्यम से ब्राउज़र URL उपयोग करने में सक्षम हो जाएगा:

trace(stage.loaderInfo.parameters["browserURL"]); 

ध्यान दें कि यह केवल आप अपने SWF फ़ाइल के लिए सृजित HTML का नियंत्रण है, तो काम करेंगे - अगर उन हैं एसडब्ल्यूएफ को पकड़ने और अपने स्वयं के एम्बेड एचटीएमएल लिखने जा रहा है, यह काम नहीं करेगा।

यदि आपके पास फ्लैश एम्बेड एचटीएमएल का नियंत्रण नहीं है, तो आपको बाहरी इंटरफेस कक्षा का उपयोग कर रनटाइम पर ब्राउज़र से पूछताछ करने के लिए फ़्लैश प्राप्त करने की आवश्यकता होगी; अन्य लोगों को "window.location.href.toString" के उपयोग लेकिन इस IE6 में समस्याग्रस्त साबित कर सकते हैं, मैं सभी ब्राउज़र में मज़बूती से निम्नलिखित काम करता है खोजने के

const browserURL : String = ExternalInterface.call("eval", "window.location.href"); 

नोट इसी क्रम में इस काम करने के लिए, आप का सुझाव दिया है अपने फ़्लैश फिल्म के लिए जावास्क्रिप्ट को पहुंच प्रदान करनी होगी, इस प्रक्रिया के बाद, फिर से, HTML एम्बेड कोड के माध्यम से और allowScriptAccess param

2
var url:String = loaderInfo.loaderURL; 

भी काम करने लगता है।

0

मैं लंबे समय से फ्लैश का उपयोग कर रहा हूं और इसे कभी नहीं देखा। यह केवल सुरक्षा के लिए डोमेन देता है। यह लोड किए गए swfs के माध्यम से भी काम करता है। Iframes के बारे में निश्चित नहीं है।

Security.pageDomain 
संबंधित मुद्दे