2012-02-10 3 views
0

У меня проблема с flashvars, когда я читал URL-адрес браузера, если я присвоил номера только Id (мой параметр в URL-адресе), все работает нормально, но если мой id включает характер, то он не работает, я не хочу ничего менять в флэш сторону в MXML файлах, я хочу сделать это с JavaScriptflashvars не работает с буквенно-цифровым значением, считанным с url

вот мой код

<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 работает отлично

ответ

0

вспышка получает flashvars как строки, если он не работает для строк, тогда он должен отбрасывать их на номера или разыгрывать их каким-либо другим способом - изменение стороны JavaScript ничего не изменит, как бы вы это ни делали. Тем не менее, вы можете определенно улучшить то, что вы делаете на JavaScript (кто знает, может быть, вам понадобится его в другой раз?)

Таким образом, возврат не является функцией, поэтому return (pair[1]) является избыточным, должен быть return pair[1]. Однако возвращение из середины функции - плохой стиль. Хуже того, ваша функция вернется либо неопределенной, либо строкой - хороший стиль согласован и возвращает один и тот же тип в каждой ситуации. Плохая идея для анализа строки путем создания множества массивов - вам не нужно это делать, вместо этого используйте регулярные выражения. Например, что-то вроде этого должно делать следующее: /([^&=]+)=([^&]*)/g бонус в том, что регулярные выражения намного быстрее, чем остальные код JavaScript, потому что они реализованы в C. Переменные внутри внутри внутри функции «повышены» - это означает, что var pair фактически объявленный вне цикла. Я бы назвал это хорошей практикой, чтобы технически написать объявление переменной в том месте, где это фактически объявлено - это помогает впоследствии избежать определенных ловушек.

+0

спасибо за помощь, но я даже не пытался использовать эту функцию и просто упростил использование flashvars.StartPage = swfobject.getQueryParamValue («Id»), но все же та же проблема работает с числом, но не с комбинацией чисел и строка – Mahsa

 Смежные вопросы

  • Нет связанных вопросов^_^