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

标签 javascript asp.net flash query-string swfobject

我的 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/

相关文章:

javascript - Angular 过滤器 :{v:0} does not filter anything. 其他值工作正常

javascript - 意外字符 '$' jQuery

c# - 使用主页时在网页上设置背景图片

flash - 循环声音闪光 as3 的首选方法

html - 非事件浏览器选项卡中的 Flash 电影暂停或不实时执行

c# - 如何从 window.external.Notify ("someText")的事件处理程序(即 WebBrowser.ScriptNotify 事件)获取结果返回给 JS?

javascript - 有人可以解释一下这些 javascript 概念吗?

javascript - knockout 选择选项在渲染项目后绑定(bind)回调

asp.net - 如何查看针对 ASPNETDB 发出的 SQL 命令并观察数据流?

php - 我如何知道请求是否来自 flash swf?