一、從JavaScript獲取本地IP地址
JavaScript可以通過WebRTC的API獲取本地IP地址。WebRTC(Web Real-Time Communication)是一種瀏覽器間點對點的實時通信技術,是基於NAT(Network Address Translation)技術的。
下面是從JavaScript獲取本地IP地址的示例:
<script>
window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
var pc = new RTCPeerConnection({iceServers:[]}), s = () => ['192.168.2.1'];
pc.createDataChannel('');
pc.createOffer(pc.setLocalDescription.bind(pc), s);
pc.onicecandidate = function(ice) {
if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(/typ host/g)) return;
document.getElementById('local-ip').innerHTML = (ice.candidate.candidate.match(/([0-9]{1,3}\.){3}[0-9]{1,3}/g))[0];
pc.onicecandidate = () => {};
};
</script>
<div id="local-ip"></div>
上面代碼通過RTCPeerConnection創建一個對等連接,並通過setLocalDescription()設置一個本地描述和一些空的ICE服務器對象,然後創建了一個數據信道。使用createOffer()創建了一個offer,並將本地描述設置為offer;然後onicecandidate事件會將獲取到的IP地址賦值給div元素中。
二、從JavaScript獲取本地IP地址和主機名稱
通過網絡接口信息獲取本地IP地址和主機名稱。這種方法需要通過Node.js,在瀏覽器端無法使用。
示例代碼如下:
const os = require('os');
const interfaces = os.networkInterfaces();
for (const interfaceName in interfaces) {
const interface = interfaces[interfaceName];
for (let i = 0; i < interface.length; i++) {
const alias = interface[i];
if (alias.family !== 'IPv4' || alias.internal !== false) {
continue;
}
console.log(`Interface: ${interfaceName}, Address: ${alias.address}, Hostname: ${os.hostname()}`);
}
}
上面的代碼通過os模塊獲取本地網絡接口信息,並遍歷獲取IPv4地址和主機名。
三、從JavaScript獲取本地IP地址知乎
在知乎上有用戶分享了一個獲取本地IP地址的JavaScript代碼。示例代碼如下:
function find(ip, mask) {
var ips = ip.split('.');
var masks = mask.split('.');
var result = [];
for(var i=0; i<ips.length; i++) {
var ip = parseInt(ips[i]);
var mask = parseInt(masks[i]);
result.push(ip & mask);
}
return result.join('.');
}
function getIPs(callback) {
var ips = [];
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://www.zhihu.com/cdn-cgi/trace', true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var text = xhr.responseText;
var lines = text.split('\n');
for(var i=0; i<lines.length; i++) {
var line = lines[i].trim();
if(line.startsWith('ip=')) {
var ip = line.substring(3);
var mask = '255.255.255.0';
ips.push(find(ip, mask));
}
}
callback(ips);
}
};
xhr.send();
}
getIPs(function(ips) {
console.log(ips.join(', '));
});
該代碼通過XMLHttpRequest從知乎的CDN獲取本地IP地址,在獲取到IP地址後進行處理並輸出。
四、從JavaScript獲取本地文件
可以使用File API從瀏覽器本地文件系統訪問本地文件。使用FileReader API,可以讀取文件內容並以文本或URL等形式輸出。下面是一個簡單的示例:
function readFile(input) {
var reader = new FileReader();
reader.onload = function() {
console.log(reader.result);
};
reader.readAsText(input.files[0]);
}
上面代碼中,使用了一個input元素,當用戶選擇文件後,調用readFile()函數。該函數使用FileReader API讀取文件內容,並輸出到控制台。
五、從JavaScript獲取本地圖片
如果需要從瀏覽器本地文件系統中獲取圖片文件,可以使用Canvas API。下面是一個簡單的示例:
function loadImage(input) {
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
var image = new Image();
image.onload = function() {
canvas.width = image.width;
canvas.height = image.height;
context.drawImage(image, 0, 0);
var dataUrl = canvas.toDataURL('image/png');
console.log(dataUrl);
};
image.src = URL.createObjectURL(input.files[0]);
}
上面代碼中,使用了一個input元素,當用戶選擇圖片後,調用loadImage()函數。該函數使用Canvas API繪製圖片到畫布上,並將處理後的圖片輸出為data URL格式的字符串。
六、通過Vue獲取本地IP
Vue.js是一個MVVM(Model-View-ViewModel)框架,用於構建動態Web界面。Vue.js提供了一種MVVM的漸進式框架,並支持組件化開發。下面是一個使用Vue.js獲取本地IP的示例:
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<div id="app">
Your IP address is: {{ ip }}
</div>
<script>
new Vue({
el: '#app',
data: {
ip: null
},
mounted() {
this.getIP();
},
methods: {
getIP() {
axios.get('https://api.ipify.org?format=json').then(response => {
this.ip = response.data.ip;
});
}
}
});
</script>
上面代碼中,使用了Vue.js通過axios調用API獲取本地IP,並將IP地址輸出為數據綁定綁定到div元素。
七、前端獲取本地IP地址
可以使用XMLHttpRequest調用REST API獲取本地IP地址。下面是一個使用XMLHttpRequest獲取本地IP地址的示例:
<div id="ip"></div>
<script>
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
var result = JSON.parse(xhr.responseText);
document.getElementById('ip').innerHTML = result.ip;
}
};
xhr.open('GET', 'https://api.ipify.org?format=json', true);
xhr.send();
</script>
上面代碼中,使用XMLHttpRequest調用REST API獲取本地IP地址,並將結果輸出到div元素。
八、通過JavaScript獲取當前IP地址
可以通過location對象獲取當前訪問頁面的IP地址。下面是一個獲取當前IP地址的示例:
Your IP address is: <span id="ip"></span>
<script>
var ipAddress = location.hostname;
document.getElementById('ip').innerHTML = ipAddress;
</script>
上面代碼中,使用location對象獲取當前訪問頁面的IP地址,並將IP地址輸出到span元素。
九、從JavaScript獲取用戶的IP地址
可以使用JavaScript在瀏覽器端獲取用戶的IP地址。下面是一個獲取用戶IP地址的示例:
<script>
var script = document.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.src = 'https://ipv4.myexternalip.com/jsonp/';
var ref = document.getElementsByTagName('script')[0];
ref.parentNode.insertBefore(script, ref);
function callback(json) {
var ipAddress = json.ip;
console.log(ipAddress);
}
</script>
上面代碼中,使用了一個外部腳本獲取JSON格式的用戶IP地址,並將IP地址輸出到控制台。
原創文章,作者:FRTI,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/142611.html
微信掃一掃
支付寶掃一掃