2014-10-09 79 views
0

我使用下面的代碼檢索主機IP地址:構建腳本源動態

<script type="text/javascript" src="http://l2.io/ip.js"></script> 

我需要檢索從上述網址的IP地址和構造另一個URL是這樣的:

<script type="text/javascript" src="http://<above_ip_address>:8080/MonarchDemo/.."></script> 

兩個腳本存在於HTML文件中像這樣的<body>標籤中:

<html> 
    <body> 
     <script type="text/javascript" src="http://l2.io/ip.js"></script> 
     <script type="text/javascript" src="http://<ip_address>:8080/MonarchDemo/.."></script> 
    </body> 
</html> 

運行此html文件,第一個script顯示正確的IP地址,但我無法替換第二個script中的該IP地址。請指導。

+0

是第一個腳本動態?你怎麼得到ipaddres – 2014-10-09 15:36:44

+0

不,它不是。第一個腳本是靜態的。第二個腳本基於第一個腳本返回的IP地址是動態的 – user182944 2014-10-09 15:37:33

+0

你在某些js變量中是否有一些ipaddress – 2014-10-09 15:38:29

回答

2

我不確定我是否完全理解問題,但不是試圖替換靜態腳本標記,而是爲什麼不動態創建一個?

<script type="text/javascript" src="http://l2.io/ip.js?var=ipAddressFound"></script> 

var scr = document.createElement("script"); 

scr.type = "text/javascript"; 
scr.src = 'http://' + ipAddressFound + ':8080/MonarchDemo/..'; // Use the IP found above 
scr.innerHTML = null; 
document.body.appendChild(scr); 

感謝這個答案了var創建到腳本: Get client IP address via third party web service

+0

感謝您的指導。同意這一點。但第一個腳本正在返回我的IP地址,如何取代您發佈的上述代碼中的那個? – user182944 2014-10-09 15:36:49

+0

@ user182944在上面的代碼中有一個變量'ipAddressFound' - 這將保存第一個腳本返回的值。對不起,如果我錯過了什麼。 – 2014-10-09 15:37:36

+0

但是如何將你的ip地址保存在你命名爲ipAddressFound的變量中,並由腳本'' '? – user182944 2014-10-09 15:40:10

1

您可以使用jQuery的加載腳本take a look here

$.getScript('http://<ip_address>:8080/MonarchDemo/..', function(){}); 
1

你試圖內加載在執行第一個腳本之後調用ajax?

退房http://api.jquery.com/jquery.getscript/

嘗試類似:

var getIP = function() { 
    var ipadress; 
    // code for IP-Adress retrieval here 
    return ipadress; 
} 

// setup the URL 
var url = getIP() + ":8080/MonarchDemo/..." 
$.getScript(url, function(data, textStatus, jqxhr) { 
    // do want you want to do 
    // i.e. 
    // console.log(data); // Data returned 
    // console.log(textStatus); // Success 
    // console.log(jqxhr.status); // 200 
    // console.log("Load was performed."); 
}); 

作爲替代你可以只instert上運行的JavaScript(文件撰寫...)第二腳本塊。

1

你必須動態地生成第二個腳本標籤..

var dynamicScript = document.createElement('script'); 
    var scriptUrl = ":8080/MonarchDemo/.."; 

    var scripts = document.getElementsByTagName("script"); 

    //fetch the source and parse out the domain .. 

    var domain = scripts[0].getAttribute('src').replace('http://', '').replace('https://', '').split(/[/?#]/)[0]; 

    dynamicScript.setAttribute('src', "//" + domain + scriptUrl); 

    document.body.appendChild(dynamicScript)