0

我想用一个简单的函数访问这个链接返回的数据:https ://geoapi123.appspot.com/

如果单击该链接,则返回如下所示:

function geoip_country_code(){return"UK"}
function geoip_country_name(){return"United Kingdom"}
function geoip_city(){return"London"}
...

特别是,我正在寻找 geoip_city。我不想使用 AJAX 或 jQuery。我需要一个简单的函数,它不需要脚本标签或头部的任何引用。接收到的数据需要存储在一个变量中,完全独立于主页或主页上的任何事件。该函数不能被任何 onload 或 click 事件或主页发生的任何其他事件调用。

这是一个带有头脚本标签的工作示例(不是我想要的):

<head>
<script language="JavaScript" src="https://geoapi123.appspot.com/"></script>
</head>

<body>
<script language="JavaScript">
var city = geoip_city();
alert(city);
</script>
</body>

这是我想要的一个想法:

function getLocation() {
    ???                            //access homepage somehow here
    var city = geoip_city();       //get result
    alert(city);                   //alert result
};
getLocation();                     //call function

这是我迄今为止最接近的尝试(不工作,返回为“0”):

function accessLocation() {
    var xmlhttp = new XMLHttpRequest();

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == XMLHttpRequest.DONE) {
           alert(xmlhttp.status);
        }
    };

    xmlhttp.open("GET", "https://geoapi123.appspot.com", true);
    xmlhttp.send();
};
accessLocation();

谢谢你启发我!

4

1 回答 1

0

您可以通过代码添加脚本元素并从“geoapi”加载源代码:

    function clickHandler() {
      var city = geoip_city();
      alert(city);
    }

    function ready() {

      var element = document.getElementById('cityFinder');
      element.addEventListener('click', clickHandler, false);
    }

    function init() {
      var script = document.createElement('script');
      script.onload = function() {
        ready();
      };
      script.src = "https://geoapi123.appspot.com/";
      document.getElementsByTagName('head')[0].appendChild(script);
    }
<body onload="init();">

  

  <input type="button" id="cityFinder" value="Where am I?"></input>

</body>

于 2018-10-27T16:19:14.843 回答