функция. ошибка... в чем проблема?
Добрый день!
Перейдем сразу к делу. идет вызов функции (строка 4) if (/nebo.mobi/.exec(window.location)) { setInterval(function () { if (document.getElementById('cbx').checked) { var html = get_html('http://nebo.mobi/home', "http://nebo.mobi/home"); var src = html.getElementsByClassName('tdn')[0].getElementsByTagName('IMG')[0].getAttribute('src'); console.log(src); } }, 2000); } сама функция: function get_html(url, ref_url) { var html; GM_xmlhttpRequest({ method: "GET", url: url, headers: { Referrer: "http://nebo.mobi/home" }, onload: function (response) { var parser = new DOMParser(); html = parser.parseFromString(response.responseText, "text/html"); /* var src = html.getElementsByClassName('tdn')[0].getElementsByTagName('IMG')[0].getAttribute('src'); console.log(src); */ }, onerror: function (response) { console.log(response); } }); html = 'error'; return html; } выдает ошибку: Uncaught TypeError: Cannot read property 'getElementsByClassName' of undefined script.js:102(anonymous function) в чем проблема? если получать атрибут html.getElementsByClassName('tdn')[0].getElementsByTagName('IMG')[0].getAttribute('src') в самой функции - работает все отлично, вне функции не хочет. подскажите, в чем загвоздка? |
ufo,
код первый строка 4 для получения html необходимо время - понятно? |
Если честно, то нет :cray:
Объясните пожалуйста :help: |
ufo,
запрос на сервер -- нужно время чтоб пришёл ответ с сервера -- а ваш код не ждёт исполняется сразу -- а onload ждёт ответ и только тогда исполняется |
дык как так то?
я же вызываю функцию. return после onload по идее функция должна выполнится и возвращать ... почему это не так происходит? и как можно решить проблему? |
ufo,
решение использовать функцию в onload -- то есть обрабатывать ответ когда он приходит Цитата:
|
спасибо за советы)))
впихнул туда synchronous: true, и опять ничего. но возник вопрос, для чего нужен onerror: и как он работает? |
ufo,
Цитата:
Прочти учебник на этом сайте, там всё объясняется. |
а ошибка какого рода?
|
Часовой пояс GMT +3, время: 02:46. |