我使用以下代码检索主机IP地址:
<script type="text/javascript" src="http://l2.io/ip.js"></script>
我需要从上面的url中检索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 :(得分:3)
我不确定我是否完全理解了这个问题,但是为什么不动态创建一个静态脚本标签,而不是尝试更换静态脚本标签?
<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
答案 1 :(得分:1)
您可以使用 jQuery 加载脚本take a look here
$.getScript('http://<ip_address>:8080/MonarchDemo/..', function(){});
答案 2 :(得分: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." );
});
作为替代方案,您可以在运行时使用javascript(document.write ...)来处理第二个脚本块。
答案 3 :(得分: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)