2012-01-24 32 views
0

我有以下腳本:JavaScript函數將不會運行

<script> 
    (function(d, s, id, p) { 
var js, ins = d.getElementsByTagName(s)[0]; 
    js = d.createElement(s); 
    js.src = "http://www.site.com/feeds/run.php?id="+id+"&p="+p; 
    ins.parentNode.insertBefore(js, ins); 
data(); 
}(document, 'script', 131, 'large')); 
</script> 

的run.php實際上返回一個運行良好並執行一些功能一個javascript,但功能我在上面的腳本中調用(數據();)將不會執行。數據功能如下:

function data(){ 
    var u; 
    alert("I am an alert box"); 
    u = document.URL; 
    document.body.innerHTML += '<form id="dynForm" target="transFrame" action="http://www.site.com/data.php" method="post"><input type="hidden" name="u" value="'+u+'"></form>'; 
    document.getElementById("dynForm").submit(); 
} 

如果任何人有信息可能會幫助我運行此功能,將不勝感激。

- Chris Shouts - 我檢查了所有的功能,他們都很好。如果我像嵌入腳本:

<script type="text/javascript" src="http://www.site.com/feeds/run.php"></script> 

但是,因爲我打算讓人們把它添加到他們的網站,不希望他們刪除這些行停止某些操作,我不能使用這條線。但是當我使用這種方法時,我必須選擇在文件中運行其他功能還是這個功能。

+0

您是否嘗試過調試使用調試器的腳本? –

+0

你在Firebug或Chrome開發工具中遇到特定的JS錯誤嗎?請分享一下。 –

+1

'data()'如何進入範圍?它是否被run.php調用檢索到?它是否在被引用的單獨的JavaScript文件中? –

回答

3

插入包含數據函數的腳本後,您不會等待腳本完成加載,因此數據函數尚不可用。

試試這個:

(function(d, s, id, p) { 
var js, ins = d.getElementsByTagName(s)[0]; 
    js = d.createElement(s); 
    js.src = "http://www.site.com/feeds/run.php?id="+id+"&p="+p; 
    ins.parentNode.insertBefore(js, ins); 
    var timer = setInterval(tryData, 100); 
    function tryData() 
    { 
     if(window.data) 
     { 
      clearInterval(timer); 
      data(); 
     } 
    } 
}(document, 'script', 131, 'large')); 
+0

你絕對是天才Tyilo!謝謝你,一直試圖讓它運行幾個小時,謝謝你。 – Paul

+0

@Paul沒問題;) – Tyilo