2012-02-22 4 views
1

привет и спасибо за остановку.выполнить inline js, загруженный через ajax

Я уже решил свою проблему, но сам по себе, поэтому просто хочу поделиться своим решением, и, возможно, у кого-то есть более элегантный способ его решения. возможно, это просто приятно.

поэтому я загружаю некоторые html через jquery.ajax(), а dataType - html. иногда видео помещается внутри, и самый элегантный способ для меня, чтобы встроить это, является jwplayers JS встраивать код, который выглядит следующим образом:

<script> 
    jwplayer("mediaplayer").setup({ 
     flashplayer: "/player.swf", 
     image: "/image.jpg", 
     autostart: true, 
     'controlbar': 'none', 
     file: "/video.m4v", 
     width: 752, 
     height: 416 
    }); 
</script> 

теперь, если я загружаю это, ничего не происходит, в JS просто не выполняется.

поэтому я закончил тем, что поставил js БЕЗ скриптовых тегов в div.

<div id="vc"> 
    jwplayer("mediaplayer").setup({ 
     ... 
    }); 
</div> 

, а затем в моей ajaxComplete() вызов я просто переместить вещи из DIV и поместите его между двумя тегами сценария.

if ($("#vc").text() !== "") { 
    var vjs = $("#vc").text(); 
    $("#vc").empty().html("<script>"+vjs+"</script>"); 
} 
+1

Javascript eval() функция? – Cristy

ответ

2

Определим функцию:

<script type="text/javascript"> 
    var embedPlayer = function() { 
     jwplayer("mediaplayer").setup({ 
      flashplayer: "/player.swf", 
      image: "/image.jpg", 
      autostart: true, 
      'controlbar': 'none', 
      file: "/video.m4v", 
      width: 752, 
      height: 416 
     }); 
    }; 
    embedPlayer(); 
</script> 

, а затем в обратном вызове успеха вы могли бы назвать эту функцию:

$.ajax({ 
    url: '/foo', 
    success: function(result) { 
     $('#container').html(result); 
     embedPlayer(); 
    } 
}); 
+0

О, я сказал ему использовать eval() вместо вызова функции! глупый я! – Khodor

+0

так «просто» помещает верхний код в мой загруженный файл ajax? – honk31

+0

Я пробовал это вчера (и теперь снова), но я получаю, что «embedPlayer не определен», если я назову embedPlayer() при успехе. – honk31

0

хотя это не рекомендуется, пользователю Eval();

if ($("#vc").text() !== "") { 
    eval($("#vc").text()) 
} 
Смежные вопросы