gpt4 book ai didi

javascript - flashvars 不适用于从 url 读取的字母数字值

转载 作者:行者123 更新时间:2023-11-28 10:00:38 24 4
gpt4 key购买 nike

我的 flashvars 有问题,当我从浏览器读取 url 时,如果我只为 Id (我的 url 中的参数)分配了数字,则一切正常,但如果我的 id 包含字符,则它不起作用,我不想更改 mxml 文件中 flash 端的任何内容,我想使用 javascript 来完成此操作

这是我的代码

   <script type="text/javascript">
function getQueryVariable(variable)
{
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0; i<vars.length; i++)
{
var pair = vars[i].split("=");
if (pair[0] == variable)
return (pair[1]);
}
}
</script>

以及稍后在我的代码中

    flashvars.StartPage = getQueryVariable("Id"); 

swfobject.embedSWF(
"myFlashFile.swf", "flashContent",
"100%", "100%",
swfVersionStr, xiSwfUrlStr,
flashvars, params, attributes);

一个不起作用的例子是

myUrl/default.aspx?Id=0061A

myUrl/default.aspx?Id=0061完美运行

最佳答案

Flash 将 flashvars 作为字符串接收,如果它对字符串不起作用,那么它必须将它们转换为数字或以其他方式解析它们 - 改变 JavaScript 方面不会改变任何东西,无论你怎么做。然而,你绝对可以改进你在 JavaScript 中所做的事情(谁知道,也许你以后会需要它?)

所以,return不是一个函数,因此return (pair[1])是多余的,应该是returnpair[1]。然而,从函数中间返回是一种不好的风格。更糟糕的是,您的函数将返回未定义或字符串 - 良好的风格是一致的,并在每种情况下返回相同的类型。通过生成大量数组来解析字符串是一个坏主意 - 您不需要这样做,而是使用正则表达式。例如,类似这样的东西应该可以完成这项工作: /([^&=]+)=([^&]*)/g 一个好处是正则表达式比其他表达式快得多JavaScript 代码,因为它们是用 C 实现的。函数内部 block 内的变量被“提升” - 这意味着 varpair 实际上是在循环外部声明的。我认为从技术上在实际声明的地方编写变量声明是一种很好的做法 - 这有助于以后避免某些陷阱。

关于javascript - flashvars 不适用于从 url 读取的字母数字值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9233719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com