Динамически вставлять javascript с помощью Javascript?
Я пытаюсь динамически вставить набор тегов скрипта с некоторым кодом javascript в нем, используя javascript. Я в основном пытаюсь обернуть файл в jwplayer, но строка скрипта нарушает остальную часть кода javascript на странице. Как мне сделать это правильно?
Строка, вызывающая проблему:
$file_link_insert = "<script type='text/javascript'>jwplayer('mediaplayer').setup({flashplayer: 'player.swf', file: '"+$href+"'});</script>";
Остаток функции для ref:
$(".file_link").live("click", function(e){
e.preventDefault();
var $href = $(this).attr("rel");
// Dialog
$('#filelink').dialog({
autoOpen: true,
width: 300,
modal: true,
buttons: {
"Ok": function() {
if($("input[name=file_link_text]").val()!=""){
$file_type = fileType($href);//determine if its video file see function below.
if($file_type == 'vid'){
$file_link_insert = "<script type='text/javascript'>jwplayer('mediaplayer').setup({flashplayer: 'player.swf', file: '"+$href+"'});</script>";
// $file_link_insert = " <p><a href=""+$href+"">"+$("input[name=file_link_text]").val()+"</a></p> ";
}else { $file_link_insert = " <p><a href=""+$href+"">"+$("input[name=file_link_text]").val()+"</a></p> "; }
$("#_tinyMCEinit_ifr").contents().find("body").append($file_link_insert);
$("#content_editor ul li:first a").click();
$(this).dialog("close");
$("input[name=file_link_text]").val("");
} else { alert("You must enter text label for your link!"); }
},
"Cancel": function() {
$(this).dialog("close");
}
}
});
});
4 ответа:
Вы не можете включить
</script>
в javascript, потому что браузер будет интерпретировать его как конец сценария. Просто разорвать или избежать строки. вот так<\/script>
Смотрите зачем разбивать тег
Это неправильно:
$file_link_insert = "<script type='text/javascript'>jwplayer('mediaplayer').setup({flashplayer: 'player.swf', file: '"+$href+"'});</script>";
Вам нужно бежать
</script>
здесь, или он закроет элемент<script>
. используйте простую escape-последовательность JavaScript , например<\/script>
:$file_link_insert = "<script>jwplayer('mediaplayer').setup({flashplayer: 'player.swf', file: '"+$href+"'});<\/script>";
Я думаю, что правильный способ-использовать DOM и динамически загружать Javascript и добавлять его везде, где вы хотите:
var script = document.createElement( 'script' ); script.type = 'text/javascript'; script.src = "myScript.js"; $("head").append( script );
добавленный в head тег в этом случае вы можете изменить скрипт.src к сценарию.текст для встроенных скриптов.