使用Javascript动态插入JavaScript?

时间:2012-02-13 11:23:08

标签: javascript jquery jwplayer

我正在尝试使用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 个答案:

答案 0 :(得分:3)

您不能在JavaScript中包含</script>,因为浏览器会将其解释为脚本的结尾。简单地分解或逃脱字符串。像这样<\/script>

请参阅Why split the <script> tag when writing it with document.write()?

答案 1 :(得分:1)

我认为正确的方法是使用DOM并动态加载Javascript并将其附加到任何地方:

var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src = "myScript.js";
$("head").append( script );

在这种情况下附加到head标记中,您可以将script.src更改为script.text以获取内联脚本。

答案 2 :(得分:1)

这是错误的:

$file_link_insert = "<script type='text/javascript'>jwplayer('mediaplayer').setup({flashplayer: 'player.swf', file: '"+$href+"'});</script>";

You need to escape </script> here or it will close the <script> element.使用简单的JavaScript escape sequence,例如<\/script>

$file_link_insert = "<script>jwplayer('mediaplayer').setup({flashplayer: 'player.swf', file: '"+$href+"'});<\/script>";

答案 3 :(得分:0)

您需要通过DOM API创建脚本标记。 使用document.createElement(&#34;脚本&#34);