2012-02-13 7 views
2

javascriptを使用して、いくつかのjavascriptコードを含むスクリプトタグのセットを動的に挿入しようとしています。私は基本的にjwplayerでファイルをラップしようとしていますが、スクリプト文字列はページ内のJavaScriptコードの残りを分解しています。これを正しく行うにはどうしたらいいですか?問題の原因Javascriptを使用して動的にJavaScriptを挿入しますか?

ライン:参照するための機能の

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

レクリエーション:

$(".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"); 
          } 
         } 
       }); 
      }); 
+0

ifブロック内でこの行を呼び出してみませんか? – Mikhas

+0

問題は ''が実際にjsを早く終了させることです。 – jurgemaister

+0

これは実際には[jQuery:' –

0

あなたはDOM APIを介してスクリプトタグを作成する必要があります。 document.createElement( "script");

1

私はあなたが希望する適切な方法は、DOMを使用することだと思いますし、動的にJavascriptをロードし、どこでもそれを追加します。この場合、ヘッドタグにアペンド

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

を、あなたはスクリプトにscript.srcを変更することができます。インラインスクリプトのテキスト。

+1

['script.type'の設定は不要です。](http://mathiasbynens.be/notes/async-analytics-snippet#type) –

+0

必須ではありませんが、コードの可読性を定義するのは良いことです。 – sysop

+0

これはどのようにコードを読みやすくしますか? –

1

を参照してください。 <\/script>

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

これは動作しますが、私は期待したようにjwplayerがtincymceに挿入されないという新しい問題があります。 – user794846

関連する問題