我目前有一个显示DNS和IP地址等信息的div。
我试图在IP地址变量发生变化时触发警报,所以我试图在没有太多运气的情况下同时监听div的变化和变量本身。如果变量发生变化,是否有明显的方法来警告或触发函数?
$(ipv4.ipaddr).change(function() {
alert("IP Changed");
});
用于正常显示IP地址的脚本:
if(result.ipv4){
$("#btn-disconnect").show();
$("#btn-disconnect-modem").show();
var ipv4=result.ipv4;
html+="<tr><td>IPAddr</td><td>"+ ipv4.ipaddr+"</td></tr>";
if(ipv4.netmask) html+="<tr><td>Netmask</td><td>"+ ipv4.netmask+"</td></tr>";
if(ipv4.gateway) html+="<tr><td>Gateway</td><td>"+ ipv4.gateway+"</td></tr>";
label_dns="DNS";
for(var i=0;i<ipv4.dns.length;i++){
html+="<tr><td>"+label_dns+"</td><td>"+ ipv4.dns[i] +"</td></tr>";
label_dns="";
}
if(proto=="wwan" || proto=="tethering"||proto=="3g"){
if(result.tx) html+="<tr><td>TX Data</td><td>"+(result.tx/1024/1024>1? ((result.tx/1024/1024).toFixed(2)+" MB"): ((result.tx/1024).toFixed(2) +" KB") )+" </td></tr>";
if(result.rx) html+="<tr><td>RX Data</td><td>"+(result.rx/1024/1024>1? ((result.rx/1024/1024).toFixed(2)+" MB"): ((result.rx/1024).toFixed(2) +" KB") )+"</td></tr>";
}
if(typeof sta_connected === "function") sta_connected();
}else{
if( (proto=="wwan" ||proto=="tethering")){
if(!result.disabled) html+="<tr><td>Connecting to the Internet</td></tr>";
}
if(proto=="wisp" ||proto=="wds"){
if(!result.disabled) html+="<tr><td>Connecting to the Internet</td></tr>";
result.disabled? $("#btn-disconnect").hide():$("#btn-disconnect").show();
}
}
$(section).html(html);
}
答案 0 :(得分:0)
我需要html给出一个更好的答案,但我给你的这个已经有效!我想你使用jQuery,你必须知道什么时候你要检查ip,我的意思是你可以做到总是在身上放一个onclick方法(不推荐),或者你可以在用户按下你的任何可用的提交按钮时这样做形式(我将解释这一个)。看看这个:
<script>
if($("input=[type=submit]").on('click',function(){
var lastip=document.getElementById("ip").value;
$.post("yourfile.php", { lastip: lastip }, function(data){
$("#yourdiv").html(data);
});
});
</script>
yourfile.php
function user_ip() {
$ip = '';
if (getenv('HTTP_CLIENT_IP'))
$ip = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ip = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ip = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ip = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ip = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ip = getenv('REMOTE_ADDR');
else
$ip = 'Not Available';
return $ip;
}
$lastip= $_POST['lastip'];
$nowip= user_ip();
if($nowip!=$lastip AND !empty($lastip)){
echo 'ip changed!';
exit();
}
<div id="yourdiv">
<table>
<tr>
<td id="ip">IP:<?php echo $nowip;?></td>
<td id="dns">DNS:</td>
</tr>
</table>
</div>
答案 1 :(得分:0)
如下:
$(function() {
var ipAddress = ipv4.ipaddr
setInterval(() => {
if (ipAddress !== ipv4.ipaddr) {
var ipAddress = ipv4.ipaddr
alert('IP Has Changed!')
}
}, 1000)
});
这会在页面加载时将当前IP地址存储在ipAddress
,然后每隔一秒检查一次,以确保它与当前ipv4.ipaddr
相同,如果它不是 - 提高警报,保存新值,以便再次进行检查。
注意:这假设您在某处自动填充ipv4.ipaddr
。