Динамически вставлять 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 2

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 к сценарию.текст для встроенных скриптов.

Вам нужно создать тег скрипта через DOM API. документ.createElement ("скрипт");