2012-01-17 70 views
0

我使用JavaScript加載JS文件:跨域加載和執行JS

window.onload = function() { 

     var fileref=document.createElement('script') 
     fileref.setAttribute("type","text/javascript") 
     fileref.setAttribute("src", "js/index.js") 

     document.getElementsByTagName("head")[0].appendChild(fileref) 

     } 

的index.js文件具有以下符合測試

document.write('<a href="#" target="_blank">link</a>'); 

我相信,文件加載(一個alert()),但由於某種原因,我的頁面上找不到錨點。似乎也沒有任何js錯誤。

如果包括在頁面中的同一行直接工作正常

FYI:這個JS是將要安裝跨域的插件。我知道這可能是有限制的,但會感謝任何指導。 謝謝

回答

3

document.write實際上只對內嵌解析頁面執行的腳本有用。如果您稍後再撥打document.write,則會隱含執行document.open,這會消除頁面的內容。根據你所描述的,我不確定你爲什麼沒有看到。

當頁面加載完成後添加的內容,一個使用DOM,例如:

var a = document.createElement('a'); 
a.innerHTML = "link"; 
a.href = "#"; 
a.target = "_blank"; 

document.body.appendChild(a); // Or, of course, append to something more targeted 

在加載腳本方面跨域,有沒有問題,在所有。你在做什麼是好的,雖然可以縮短一點,也最好依靠是JavaScript的自動分號插入的恐怖:

var fileref = document.createElement('script'); 
fileref.src = "js/index.js"; 
document.documentElement.appendChild(fileref); 

沒有必要對type(JavaScript是默認),並且src是一種反映的屬性(如果您想繼續使用它,則爲type)。沒有必要將腳本附加到head元素,文檔元素(html)中的任何位置都可以。

+0

工程太好了!只是一個快速跟進。如何將風格屬性添加到錨? a.style似乎不起作用。再次感謝! – salmane 2012-01-17 15:34:19

+0

明白了! :.setAttribute(「style」,「color:red」)...等 – salmane 2012-01-17 15:36:36

+0

@salmane:您可以使用'style'屬性:'a.style.color =「red」;'像'background-color ',您使用camelCase名稱:'a.style.backgroundColor =「#aaa」;'。 – 2012-01-17 15:46:01