Javascript: доступ к данным с другой домашней страницы с помощью простой функции (без Ajax, без JQuery) - PullRequest
0 голосов
/ 27 октября 2018

Я хочу получить доступ к данным, возвращенным по этой ссылке, с помощью простой функции: 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 ( не то, что я хочу ):

<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();

Спасибо, что просветили меня!

1 Ответ

0 голосов
/ 27 октября 2018

Вы можете добавить элемент скрипта по коду и загрузить исходный код из '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>
...