Предполагая, что переменная содержит URL, например:
$(document).ready(function(){
$('#player').youTubeEmbed("<%=escape_javascript(@clip)%>");
});
(К сожалению, пропустили тот факт, что JavaScript не был в том же файле, что и HTML - а он не должен» т быть!)
Assuuming переменных содержат URL, если вы не хотите, чтобы URL показаны, вы можете вставлять его в переменных страницах, как это (замените div
код в show.html.erb со следующим):
<script type='text/javascript'>
window.myStuff = {
clipUrl: "<%=escape_javascript(@clip)%>"
};
</script>
... (или
<script type='text/javascript'>
var myStuff = {
clipUrl: "<%=escape_javascript(@clip)%>"
};
</script>
... что почти то же самое).
... а затем вы можете использовать его как это:
$(document).ready(function(){
$('#player').youTubeEmbed(window.myStuff.clipUrl);
});
При выводе значения переменной в этом случае, вы должны убедиться, что получает выписал заканчивает тем, что действующий JavaScript. Так, например, если переменная @clip
содержит "
или \
, вам необходимо убедиться, что "
превращен в \"
и что любая одиночная обратная косая черта превращается в \\
. Якуб Хампл с благодарностью указал на функцию escape_javascript
для этого, которую я редактировал в примерах кода.
Выполнение этого означает, что мы помещаем новый символ на window
. Я сделал наш новый символ объектом, так что, если нам нужно сделать это с другими вещами, мы можем включить их в тот же объект, чтобы мы не оставались символами повсеместно (создавая множество глобальных символов —, который является так, window
свойства — имеет тенденцию стать проблемой обслуживания, лучше всего избегать).Так, например, если у вас два клипов:
<script type='text/javascript'>
window.myStuff = {
someNiftyClip: "<%=escape_javascript(@clip)%>",
someOtherNiftyClip: "<%=escape_javascript(@anotherClip)%>"
};
</script>
Off темы: В линии вызывающей youTubeEmbed
, обратите внимание, я добавил точку с запятой в конце. Лучше не полагаться на JavaScript semicolon insertion.
Как выглядит ваш обработанный вывод? – 2010-11-28 14:17:34