Я использую SWFObject для воспроизведения SWF-файла Flash. SWF-файл поддерживает несколько переменных вспышки. Когда я пытаюсь передать сложное значение для одной из переменных Flash, которая содержит смесь одиночных и двойных кавычек, что-то плохое происходит, когда SWFObject записывает полностью визуализированный контент в DIV, выделенный для объекта flash.Проблема со смешением котировок в SWFObject addvariable call
Вот ниже код, показывающий DIV с именем flashcontent что SWFObject пишет отображаемое содержимое в и код Javascript, который взаимодействует с SWFObject:
<!-- Div that will receive the Flash object. This DIV is written to by SWFObject.js. Therfore It's name must match the name
in the so.write() statement below. -->
<div id="flashcontent">
</div>
<!-- Div that will receive the Flash object. This DIV is written to by SWFObject.js. Therfore It's name must match the name
in the so.write() statement below. -->
<div id="flashcontent">
</div>
<!-- Create the tag cloud -->
<script type="text/javascript">
var so = new SWFObject("/Content/flash/tagcloud.swf", "tagcloud", "600", "400", "7", "#336699");
so.addParam("wmode", "transparent");
so.addVariable("mode", "tags");
so.addVariable("distr", "true");
so.addVariable("tcolor", "0xff0000");
so.addVariable("hicolor", "0x000000");
so.addVariable("tagcloud", "<tags><a href='javascript:showMessage(\"tag1\");' style='9'>tag one</a><a href='javascript:showMessage(\"tag2\");' style='12'>Tag two</a></tags>");
so.write("flashcontent");
</script>
Как вы можете видеть, что я стараюсь, спасаясь от двойные кавычки вокруг параметров строки, передаваемых моей функции Javascript showMessage(). Однако, когда flashcontent содержание DIV оказываются, это выглядит следующим образом:
<div id="flashcontent"><embed type="application/x-shockwave-flash" src="/Content/flash/tagcloud.swf" width="600" height="400" id="tagcloud" name="tagcloud" bgcolor="#336699" quality="high" wmode="transparent" flashvars="mode=tags&distr=true&tcolor=0xff0000&hicolor=0x000000&tagcloud=<tags><a href='javascript:showMessage(" tag1");'="" style="9">tag one<a href='javascript:showMessage("tag2");' style="12">Tag two</a>"/></div>
Первый избежал двойных кавычек интерпретируются как немаскированном двойной кавычки и что нарушает форматирование в результате недопустимой гиперссылки. Если я вынимают неэкранированные кавычки, это то, что содержание выглядит следующим образом:
<div id="flashcontent"><embed type="application/x-shockwave-flash" src="/Content/flash/tagcloud.swf" width="600" height="400" id="tagcloud" name="tagcloud" bgcolor="#336699" quality="high" wmode="transparent" flashvars="mode=tags&distr=true&tcolor=0xff0000&hicolor=0x000000&tagcloud=<tags><a href='javascript:showMessage(tag1);' style='9'>tag one</a><a href='javascript:showMessage(tag2);' style='12'>Tag two</a></tags>"></div>
Теперь форматирование является правильным и веб-страницы, звук. Естественно, я получаю «undefined», когда моя функция ShowMessage() показывает сообщение, потому что tag1 и tag2 являются недопустимыми именами переменных Javascript.
Использует ли SWFObject addvariable метод делает что-либо неортодоксальное для экранированных двойных кавычек? Как создать строку, которую addvariable согласится, чтобы я мог получить двойные кавычки вокруг моих параметров метода Javascript?
Спасибо. Я не могу найти SWFObject 2.3, только 2.2. У вас есть ссылка? –
2.2 выполнил эту работу. Вы были правы, когда старая копия SWFObject была проблематичной. Если вы когда-нибудь найдете ссылку на 2.3, отправьте сообщение. Еще раз спасибо. –
2.3 бета находится на GitHub. http://github.com/swfobject/swfobject – pipwerks