在下面的示例中(是的,我在我的时间轴上进行编码,而我尝试解决这个问题 - 我知道,我知道)我在HTML页面中加载SWF,然后指示SWF从中获取查询参数当前的URL。查询参数将包含要播放的视频的来源。
这似乎很直接,但我无法让myURL = urlVars.videoloc;
工作。更具体地说,urlVars.videoloc
似乎是undefined
而不是保留URL中的查询参数。所有其他变量都是正确的; wholeURL
和urlVars
都已定义。
//Initialize Global Event Listener
player.addEventListener(Event.ADDED_TO_STAGE, getPlay, false, 0, true);
//Function to play the video
function getPlay(e:Event):void {
var wholeURL:String = ExternalInterface.call("window.location.search.toString");
var urlVars:URLVariables = new URLVariables(wholeURL);
var myURL:String = urlVars.videoloc; //<--- Trouble, returning 'undefined'
errorBox.text = "videoloc="+urlVars.videoloc+"\nwholeURL="+wholeURL+"\nurlVars="+urlVars+"\nmyURL="+myURL; //<--- The reason I know it is returning 'undefined'
if (myURL) {
player.load(myURL);
player.play();
}
}
答案 0 :(得分:3)
理想情况下,您应该使用调试器来检查URLVariables
对象的构成。
如果您无法轻松完成任务,可以执行此操作以跟踪其内容:
for (var parameter:String in urlVars) {
trace(parameter + "=" + urlVars[parameter]);
}
如您所见,您可以使用for in
循环遍历urlVars中的每个参数。
我猜videoLoc
是你的第一个参数?看看我的测试结果:
var address:String = "http://www.google.ca/search?q=test&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-GB:official&client=firefox-a";
var urlVars:URLVariables = new URLVariables(address);
for (var parameter:String in urlVars) {
trace(parameter + "=" + urlVars[parameter]);
}
这个输出是:
aq=t rls=org.mozilla:en-GB:official client=firefox-a http://www.google.ca/search?q=test ie=utf-8 oe=utf-8
查看q
参数发生了什么?要解决此问题,请仅使用?
var address:String = "http://www.google.ca/search?q=test&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-GB:official&client=firefox-a";
var urlVars:URLVariables
= new URLVariables(address.substr(address.indexOf('?')+1));
for (var parameter:String in urlVars) {
trace(parameter + "=" + urlVars[parameter]);
}