如何将URLVariables结果分配给字符串变量?

时间:2010-09-01 07:03:18

标签: actionscript-3

在下面的示例中(是的,我在我的时间轴上进行编码,而我尝试解决这个问题 - 我知道,我知道)我在HTML页面中加载SWF,然后指示SWF从中获取查询参数当前的URL。查询参数将包含要播放的视频的来源。

这似乎很直接,但我无法让myURL = urlVars.videoloc;工作。更具体地说,urlVars.videoloc似乎是undefined而不是保留URL中的查询参数。所有其他变量都是正确的; wholeURLurlVars都已定义。

//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();
    }
}

1 个答案:

答案 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]);
}