2015-10-27 92 views
0

我正在尝试开发一个代码来重现本地IP地址。我有代码,它会显示在console.log中,但是,我现在需要的是存储显示在console.log中的IP地址并将其重现在html代码中。我目前用来获取IP地址的代码如下:输出console.log到html

<script language="javascript"> 
function show(obj,hd,msg,off){ 
messageBox.style.top=obj.offsetTop + 100 
messageBox.style.left=obj.offsetLeft+obj.offsetWidth+5-off 
heading.innerHTML=hd 
contents.innerHTML=msg 
messageBox.style.display="block" 
} 

//get the IP addresses associated with an account 
function getIPs(callback){ 
    var ip_dups = {}; 

//compatibility for firefox and chrome 
    var RTCPeerConnection = window.RTCPeerConnection 
     || window.mozRTCPeerConnection 
     || window.webkitRTCPeerConnection; 
    var useWebKit = !!window.webkitRTCPeerConnection; 

//bypass naive webrtc blocking using an iframe 
if(!RTCPeerConnection){ 
    //NOTE: you need to have an iframe in the page right above the script tag 
// 
//<iframe id="iframe" sandbox="allow-same-origin" style="display: none"></iframe> 
//<script>...getIPs called in here... 
// 
var win = iframe.contentWindow; 
    RTCPeerConnection = win.RTCPeerConnection 
     || win.mozRTCPeerConnection 
     || win.webkitRTCPeerConnection; 
    useWebKit = !!win.webkitRTCPeerConnection; 
} 

//minimal requirements for data connection 
var mediaConstraints = { 
    optional: [{RtpDataChannels: true}] 
}; 

var servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]}; 

//construct a new RTCPeerConnection 
var pc = new RTCPeerConnection(servers, mediaConstraints); 

function handleCandidate(candidate){ 
    //match just the IP address 
    var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/ 
    var ip_addr = ip_regex.exec(candidate)[1]; 

    //remove duplicates 
    if(ip_dups[ip_addr] === undefined) 
     callback(ip_addr); 

    ip_dups[ip_addr] = true; 
} 

//listen for candidate events 
pc.onicecandidate = function(ice){ 

    //skip non-candidate events 
    if(ice.candidate) 
     handleCandidate(ice.candidate.candidate); 
}; 

//create a bogus data channel 
pc.createDataChannel(""); 

//create an offer sdp 
pc.createOffer(function(result){ 

    //trigger the stun server request 
    pc.setLocalDescription(result, function(){}, function(){}); 

}, function(){}); 

//wait for a while to let everything done 
setTimeout(function(){ 
    //read candidate info from local description 
    var lines = pc.localDescription.sdp.split('\n'); 

    lines.forEach(function(line){ 
     if(line.indexOf('a=candidate:') === 0) 
      handleCandidate(line); 
    }); 
}, 1000); 
} 

//Test: Print the IP addresses into the console 
getIPs(function(ip){console.log(ip);}); 

</script> 

调试完此代码后,IP地址显示在控制台日志中。我现在想要做的是以下几点:

<td width="550" height="100"><font color="#01539c"> 
Local Area Connection IPv4 address - //string with IP 
<br> 
Wireless Network Connection IPv4 address - //string with IP 
</font></td> 

你能帮助我如何将IP地址添加到每个这些行吗?我也想知道的是,如果有一种方法来分配一个字符串变量与我从console.log中检索到的IP地址,然后在html中调用该字符串变量。因此,例如,代码会是这个样子:

Local Area Connection - strIP 

而且在网页中它会显示这样的:

本地连接 - 192.167.2.35

希望这最后一部分澄清我的观点得到进一步的肯定,并感谢所有那些迄今为止帮助过他们的投入。

+0

可能重复[如何使用jquery将文本添加到现有div](http://stackoverflow.com/questions/15581059/how-to-add-text-to-an-existing-div-with-jquery ) – James

回答

2

您可以使用jQuery来做到这一点很容易。 环绕你想与像SPAN或DIV标签插入,从中你可以参考一个id文本,这个人是“地址”

<span id="addr">Address will appear here</span> 

然后在那里你CONSOLE.LOG您的IP地址添加这一点,哈希标签很重要,表示它是一个ID。

$('#addr').text(ip); 

,你必须包括jQuery的,复制粘贴此

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 

在你的头标记,并与

$(document).ready(function() { ... code goes here... }); 

包装你的JavaScript来确保jQuery是加载你使用它

这里是一个例子 http://codepen.io/joshuajharris/pen/jbxyGx

+0

嗨,约书亚,我已经试过这个,但它仍然没有工作。正如我向BanksySan解释的那样 - 从Visual Basic编程(6和.NET)中记得的一些小事情中,曾经有过将字符串变量分配给对象的功能,例如 str = getIPs(function(ip){的console.log(IP);}); JavaScript中是否有类似的东西?我想确保我目前在console.log中获得的结果(例如192.168.0.135)将显示在html中,并说“本地连接IPv4地址 - 192.168.0.135 感谢您的回复 – Larosa83

+0

致获取你想要的连接字符串“Local Area Connection IPv4 - ”给text()中的ip。我更新了[codepen](http://codepen.io/joshuajharris/pen/jbxyGx)以显示它。确保你在你的html中包含了jquery,并且在上面贴出了脚本标签,你可以使用一个对象来产生你的结果,但是我不会试图强制所有的东西进入oop,我仍然在学习当它适合在javascript中使用它时,[这里](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects)是js中对象的一个​​很好的资源。 – joshuajharris

+0

像往常一样,这个任务完全不需要jQuery。 – boxtrain

0

而不是直接调用console.log,写一个函数,调用console.log并输出到您的HTML。

function log(message) { 
 
    console.log(message); 
 
    var logArea = document.getElementById('log'); 
 
    console.log(logArea); 
 
    logArea.innerText = logArea.innerText + message; 
 
} 
 

 
function start() { 
 
    console.log('starting...'); 
 
    log('Something'); 
 
    console.log('... finished'); 
 
} 
 

 
start();
Logged messages: 
 

 
<div id="log"> 
 
</div>

+0

感谢您的洞察力。我对JavaScript编程还很陌生(上面的函数是从另一个来源采用的)。请给我举个例子吗? – Larosa83

+0

@ Larosa83只要有,让我知道,如果这不是你所需要的。 – BanksySan

+0

我是否在