electron 项目中通过loadURL() 方法加载用户输入的url服务,但是electron不管该url服务是否可用都会加载执行,所以需要在用户输入url后对该url进行可用性判断,记录一下解决方案:
解决方案一: XMLHTTP方案
function getURL(url) {function getXmlHttpRequest() {if (window.XMLHttpRequest) {return new XMLHttpRequest();}else if (window.ActiveXObject) {return new ActiveXObject("Microsoft.XMLHTTP");}};var xmlhttp = getXmlHttpRequest();xmlhttp.open("GET", url, false); //第三个参数表示是否异步xmlhttp.send();if (xmlhttp.readyState == 4) {if (xmlhttp.status == 200) {return true;} else {return false;}}}console.log("000----", getURL("http:127.0.0.1:8088"));
注意:使用ActiveXObject仅仅适用IE内核浏览器.
解决方案二: 利用jquery,适用所有浏览器
<div class="url-setting"><input type="url" id="vueUrl" placeholder="格式如http://127.0.0.1:8080"><button id="linkBtn">进入系统</button></div>
//jquery检查连接的url服务是否有效,适用所有浏览器
const $ = require('jquery')
$(document).ready(function () {// 执行代码function NetPing(pingUrl) {$.ajax({type: "GET",cache: false,url: pingUrl,data: "",success: function () {alert("网址有效,开始加载。。");ipcRenderer.send('asynchronous-message',pingUrl); //异步将渲染进程的数据传给主进程},error: function () {alert("无效网址,请重新输入!");$("#vueUrl").val("");}});}//点击连接vue前端服务$("#linkBtn").click(function(){let urlVal = $("#vueUrl").val();NetPing(urlVal);})
});