2013-12-18 5 views
2

Это объект, созданный swfobject, который я хочу внедрить.Swfobject меняет «&» (амперсанд) на «&« Как его остановить?

<object type="application/x-shockwave-flash" 
name="player" 
id="player" 
data="StrobeMediaPlayback.swf?ID=89.41153136547655" 
width="470" 
height="320"> 
<param name="flashvars" 
value="verbose=true&amp;src=rtmp://s161ki0ys7euuz.cloudfront.net/cfx/st/_definst_/vid_cdntest001?Signature=q-ZT9mWcIorCwGS4xgOysTyRXoUB2yza~JGITwCwx5O0JObgvlvS728vGXaI0iaow4OA8JRdFOBWYeeLQ5klYcjsWtgjzqH37ZVyV-5pyEUgT80DzWOOM9ZVfd2xBaZjISdn4cNk03FRBZ85~Z4zoEkp8MweE2HEzfrHnzZjoXlaulsPuphg59ANZCGQFneGfSI33dYhzTRDnbZbTZAGilLeu8gjtvfgm9hQ80E1zVd7wuHR8hX7or2ZjTgmDBaq4i-Nj8rJI0w3CIKAOu7JBggvclltbDnzMvy76s4Ef~GowYS7GB0p07Whi512GmGB9W1n6TqUBS-m8QK4vvqC~w__&amp;Key-Pair-Id=APKAJSRQXYNPUENHF6HQ&amp;Expires=1387470161&amp;urlIncludesFMSApplicationInstance=true"> 
</object> 

Входит в swf, но swf не функционирует должным образом. Мой код передает дополнительные flashvars в swf.

Я отслеживаю все параметры/flashvars, которые отправляются в swf. Я получаю это:

PARAMS: = verbose 
PARAMS: = Expires 
PARAMS: = src 
PARAMS: = ID 
PARAMS: = urlIncludesFMSApplicationInstance 
PARAMS: = Key-Pair-Id 

Он читает Expires, ID и Key-Pair-Id в FlashVars, когда те, все должны быть частью src паров.

Причина значение src FlashVar:

rtmp://s161ki0ys7euuz.cloudfront.net/cfx/st/vid_cdntest2?Signature=rlBXiKxXRHwSha9YB~GZjyojy8gWZXO18Ea5JLZf1PHvuJFfQE617Ea-5aq8QVoVANaSetnoHQMja76ERxBowjG8cIYxWTGP-UBzP2v-k0hZghNGTtn~qSaFRaSHJGMG59ZKW2EobOHDQxV4r7k-ZG3vAJJpFRm7SoP980DRoJM7J6oAhCUKzZOgv6uRT-StsPORU2Ny3iUx7dIf~QWYBbzfcP1cPrZnzlSx~TqnWK4oYJCGmNHjYlVbCvmYAFCRc3oFzdywzGQKeQpwqHMhR1DSrEnzMjC48mFyFXyDp5TL1qhMVNUDX~d6Ds6PoysCXV7zG8QawSdWhzwDoj4Gng__&Key-Pair-Id=APKAJSRQXYNPUENHF6HQ&Expires=1387556045" 

Если сравнить RTMP URL с моим некорректного кода, он меняется & в &amp; по какой-то причине.

В этих точках с точкой с запятой он должен разрывать строку и считывать следующие значения в виде другого flashvar.

Как я могу остановить это?


Это то, что я делаю, чтобы построить некорректный HTML:

$(document).ready(function(){ 
    callPlayer("rtmp://s161ki0ys7euuz.cloudfront.net/cfx/st/_definst_/vid_cdntest001?Signature=q-ZT9mWcIorCwGS4xgOysTyRXoUB2yza~JGITwCwx5O0JObgvlvS728vGXaI0iaow4OA8JRdFOBWYeeLQ5klYcjsWtgjzqH37ZVyV-5pyEUgT80DzWOOM9ZVfd2xBaZjISdn4cNk03FRBZ85~Z4zoEkp8MweE2HEzfrHnzZjoXlaulsPuphg59ANZCGQFneGfSI33dYhzTRDnbZbTZAGilLeu8gjtvfgm9hQ80E1zVd7wuHR8hX7or2ZjTgmDBaq4i-Nj8rJI0w3CIKAOu7JBggvclltbDnzMvy76s4Ef~GowYS7GB0p07Whi512GmGB9W1n6TqUBS-m8QK4vvqC~w__&Key-Pair-Id=APKAJSRQXYNPUENHF6HQ&Expires=1387470161"); 
}); 

function callPlayer(x){ 
    $("#PlayerHolder").html("<span id='PlayerDiv'></span>"); 

    var flashvars = { 
     verbose:true, 
     src: x, 
     urlIncludesFMSApplicationInstance:true 
    }; 

    var parameters = {}; 

    var attributes = {}; 

    attributes.name="player"; 
    attributes.id="player"; 

    swfobject.embedSWF("StrobeMediaPlayback.swf?ID="+Math.random()*100,"PlayerDiv","470","320","11.2","scripts/expressInstall.swf", flashvars, parameters, attributes); 
} 

Правильный HTML генерируется this page

+0

Почему вы не устанавливаете FlashFireBug и не сообщаете нам, что он выводит при ошибках вашего файла? –

+0

@itcouldevenbeaboat Это не говорит мне ничего нового. Он подключается к серверу, не загружая «NetStream», а затем закрывает соединение. Но если я поместил один и тот же флеш-файл в сгенерированный html, он будет работать нормально – Houseman

+2

Сделайте ваш SWF-файл выводом 'trace()' всех переменных, передаваемых через теги. Затем посмотрите, что это за трассировка и как она отличается от загруженной по умолчанию версии. –

ответ

0

Видимо, это вопрос, который они не будут исправить.is in beta, и тот, что пользователи не очень рады.

Решения будет проверять строки, которые вы планируете отправить свой FlashVars и избежать проблемных символов, например, так:

$(document).ready(function(){ 
    callPlayer("rtmp://s161ki0ys7euuz.cloudfront.net/cfx/st/_definst_/vid_cdntest001?Signature=q-ZT9mWcIorCwGS4xgOysTyRXoUB2yza~JGITwCwx5O0JObgvlvS728vGXaI0iaow4OA8JRdFOBWYeeLQ5klYcjsWtgjzqH37ZVyV-5pyEUgT80DzWOOM9ZVfd2xBaZjISdn4cNk03FRBZ85~Z4zoEkp8MweE2HEzfrHnzZjoXlaulsPuphg59ANZCGQFneGfSI33dYhzTRDnbZbTZAGilLeu8gjtvfgm9hQ80E1zVd7wuHR8hX7or2ZjTgmDBaq4i-Nj8rJI0w3CIKAOu7JBggvclltbDnzMvy76s4Ef~GowYS7GB0p07Whi512GmGB9W1n6TqUBS-m8QK4vvqC~w__&Key-Pair-Id=APKAJSRQXYNPUENHF6HQ&Expires=1387470161"); 
}); 

function callPlayer(x){ 

    $("#PlayerHolder").html("<span id='PlayerDiv'></span>"); 
    x = x.replace(/&/g,'%26'); 
    var flashvars = { 
     verbose:true, 
     src: x, 
     urlIncludesFMSApplicationInstance:true 
    }; 

    var parameters = {}; 

    var attributes = {}; 

    attributes.name="player"; 
    attributes.id="player"; 

    swfobject.embedSWF("StrobeMediaPlayback.swf?ID="+Math.random()*100,"PlayerDiv","470","320","11.2","scripts/expressInstall.swf", flashvars, parameters, attributes); 
} 

Или вы могли бы использовать неофициальной вилкуbeta, или просто подождать, пока они исправляют это.

Дискуссия по поводу того, следует ли ее фиксировать, весьма интересна.

+0

, это не неофициальная версия, это была ранняя бета-версия 2.3. Официальная бета-версия 2.3 также содержит возможность отключить кодирование. https://github.com/swfobject/swfobject – pipwerks