我遇到“&”问题。
基本上我无法在Flash AS3中正确地逃避这一点,但是我确实找到了这个似乎有用的链接: http://www.smithmediafusion.com/blog/?p=343
测试页面: http://touchstormdigital.com/leon/testing/
以下是我目前的职能:
try {
varHome = this.loaderInfo.parameters.home;
homeImage = this.loaderInfo.parameters.homeImage;
homeTitle = this.loaderInfo.parameters.homeText; // Get the Video Title
// Title = "Quick & easy chicken recipes for dinner"
} catch (e:Error) {
varHome = "false";
homeBool = false;
}
搜索和替换功能:
// Home player test search & replace ampersand
private function replaceString(str:String, find:String, replace:String):String
{
var startIndex:Number = 0;
var oldIndex:Number = 0;
var newString:String = "";
while ((startIndex = str.indexOf(find, startIndex)) != -1)
{
newString += str.substring(oldIndex, startIndex) + replace;
oldIndex = startIndex += find.length;
}
return((newString == "") ? str : newString);
}
然后我如何使用它
private function drawSplash():void
{
sp = new ScreenButton();
replaceString(homeTitle,"&", "\\u0026");
sp.drawScreenButton(playerW, playerH, homeBool, homeImage, homeTitle);
sp.addEventListener("onPlay", vd.playVideo);
sp.addEventListener("embedSplash", hideSplash);
stage.addChild(sp);
}
我认为这就是问题所在:
replaceString(homeTitle,"&", "\\u0026");
我也试过这个:
replaceString(homeTitle,"&", String.fromCharCode(38));
目标 抓住“快速和简单的鸡肉食谱晚餐”并展示它
仍然只显示“快速”
测试页面: http://touchstormdigital.com/leon/testing/
UPDATE!发现了另一个简单的修复,无需更改标题!
除了The_asMan的答案有效,但要求文本/副本写得很奇怪,我发现这个简单的javascript片段可以完成这项工作:
http://www.w3schools.com/jsref/jsref_encodeuricomponent.asp
我是如何使用它的:
<script type="text/javascript">
var homeText = "Quick & easy - chicken' recipes for dinner?!=+";
var fixed = encodeURIComponent(homeText);
</script>
然后在Flashvars区域:
so.addVariable("homeText", fixed);
然后在Flash中
unescape(homeTitle);
活泉!
答案 0 :(得分:2)
尝试unescape(homeTitle)
逃避它是你想要的相反方式。
示例:trace(unescape("%26")); //will trace out: &
答案 1 :(得分:1)
这一行显示我正在加载闪存变量。
homeTitle = this.loaderInfo.parameters.homeText;
例如,如果您有这样的网址。
http://somedomain.com?var1=aa&var2=b&var3=c
有3个变量被传递给flash var1,var2,var3
当你这样做
http://somedomain.com?title=Quick & easy chicken recipes for dinner
你正在打破2个点,第一个点是&符号告诉flash有一个新的变量要读取。另一个地方是空格,网址不能有空格。 所以编码的正确方法是
http://somedomain.com?title=Quick%20%26%20easy%20chicken%20recipes%20for%20dinner
然后当然在flash中,unescape()会很完美。
对不起,我应该早点注意到这一点,我没有告诉我数据不存在。