2013-02-15 60 views
1

我剛剛得到了JSONP的幫助下this great question的答案。現在,在我的設置中,HTML文件加載通過腳本標籤的JavaScript:可以運行JavaScript代碼加載JSONP而不是腳本標記嗎?

<script src="js/playlistcontroller.js"></script> 

現在的問題是,可以將此代碼,運行時,觸發加載我的JSONP響應?

目標是避免

<script src="playlistcontent.jsonp"></script> 
在HTML頭

,但這樣做的東西在控制器(這恰好是一個AngularJS CONTROLER,如果你很好奇)。

這是可能的嗎(從JavaScript加載JavaScript)?

+0

可能重複與SRC是可能包括document.write](http://stackoverflow.c om/questions/13121948/dynamic-add-script-tag-with-src-that-may-include-document-write) – bfavaretto 2013-02-15 19:53:29

回答

1

設施的跨瀏覽器測試腳本:

var CFLoad = { 
    fScript : null, 
    isFileReady : function (v) { 
     return (! v || v == "loaded" || v == "complete" || v == "uninitialized"); 
    }, 
    js : function(src,cb,attrs) { 
     var s = document.createElement("script"), 
      done = !1, i; 
     s.src = src; 
     s.type = "text/javascript"; 
     for (i in attrs) { 
      s.setAttribute(i, attrs[ i ]); 
     } 
     s.onreadystatechange = s.onload = function() { 
      if (! done && CFLoad.isFileReady(s.readyState)) { 
       done = !0; 
       if(cb) cb(s); 
       s.onload = s.onreadystatechange = null; 
      } 
     }; 
     window.setTimeout(function() { 
      if(!done) { 
       done = !0; 
       if(cb) cb(s,1); 
      } 
     }, 5000); 
     if(this.fScript===null) this.init(); 
     this.fScript.parentNode.insertBefore(s, this.fScript); 
    }, 
    css : function(href,cb,attrs) { 
     var l = document.createElement("link"),i; 
     l.href = href; 
     l.rel = "stylesheet"; 
     l.type = "text/css"; 
     for (i in attrs) { 
      l.setAttribute(i, attrs[i]); 
     } 
     if(this.fScript===null) this.init(); 
     this.fScript.parentNode.insertBefore(l,this.fScript); 
     if(cb) window.setTimeout(cb, 0); 
    }, 
    init : function() { 
     this.fScript = document.getElementsByTagName("script")[ 0 ]; 
    } 
}; 

使用

CFLoad.js("http://code.jquery.com/jquery-1.8.3.js", function (script_tag, failed) { 
    if(!failed) { 
     CFLoad.js("http://code.jquery.com/ui/1.9.2/jquery-ui.js", function(s, f) { 
      if(!f) { 
       alert("Loaded"); 
       js13 = jQuery.noConflict(true); 
       main(); 
      } 
     }) 
    } 
}); 

你的情況:

CFLoad.js("playlistcontent.jsonp"); 
[動態添加腳本標籤的
+0

謝謝,我會試試看! – Marcel 2013-02-16 21:38:32

+0

我現在已經從這裏找到了一個類似的腳本:http://www.nonobtrusive.com/2010/05/20/lightweight-jsonp-without-any-3rd-party-libraries/ – Marcel 2013-02-20 09:14:10

+0

是的,它做同樣的事情,但被包裝成僅用於JSON!很好的發現 – Birla 2013-02-20 16:43:21

相關問題