HTML link 到本地网络或域名

HTML link to either local network or domain name

在我的网页中,我想 link 到本地网络中的另一个 Web 服务器。 当我在本地网络中时,我使用 <a href="192.168.1.111:8080/index.jsp"> 来执行此操作。但是,当我访问本地网络之外的网站时,我需要使用域名。 <a href="mydomain.com:8080/index.jsp">

如果我要从 LAN 和 WAN 访问它,我如何在同一页代码中执行此操作。

HTML:

<a href="" id="link">link</a>

javascript:

<script>
window.onload=myFunction;
function myFunction() {
    var x = document.domain;
    var a = document.getElementById('link');
    a.href = x + "/index.jsp";
}
</script>

好吧,如果可以的话,避免此问题的最简单方法是使用相对 links。例如,如果您 link 转到同一网站上的另一个页面,您的 link 将始终有效,如果它类似于 "../directory/some-web-page.html" 而不是包含 http 的完整 link。

否则,如果您要 link 访问一个完全不同的站点,您可以使用非常简单的 JQuery ajax 请求检查您的页面是否存在于本地服务器上。如果它不存在,则假设您没有登录到同一网络并插入您的远程域名。

As discussed here,您的简单 ajax 请求可以只获取本地托管页面的 HEAD,这样您就不会获取太多数据,而只是确认它是否存在。您的代码可能是这样的:

$( document ).ready(function(){
    $.ajax({
        url: 'path/to/your-file.html',
        type: 'HEAD',
        success: function() {
            // page exists
            // replace the href attribute with local host link
            document.getElementById('your-link').setAttribute('href', 'path/to/your-file.html');
        },
        error: function() {
            // page does not exist
            // do nothing, so your link sends user to remote site
        }
    });

});

然后,在您的 HTML 中,只需将 link 添加到您的远程站点,如下所示:

<a id="your-link" href="yourremotesite.com">This is a link</a>

这无需更改代码即可在本地和远程服务器上运行。

编辑:

我不得不从床上跳起来,因为另一个答案只是在唠叨我...

您也可以尝试访问 window.location.hostwindow.location.hostname 并在 if 语句中测试它以确定您的页面是在本地主机上还是在远程服务器上。

无论如何,我希望这些解决方案之一能有所帮助。晚安,祝你好运!