Не удается записать «document. (…) .TagName» в пробел в телефоне в AppBrowser

Я открываю и выполняю эту функцию в открытом браузере с помощью встроенного JavaScript (также называемого обратными вызовами inappbrowser).

Функция работает, потому что я вижу предупреждения. Inappbrowser открывается через window.open (...):

var f_el_tname = document.body.getElementsByTagName("the_tag")[0];
  //the above alerted "undefined" in android browser and the correct value in the desktop
  //rewriting variable for debug purposes
f_el_tname = document.body.getElementsByTagName("the_tag");

alert(f_el_tname.length); //this gives "0" in phonegap android browser and "1" in desktop (correct)

for(var i = 0; i < f_el_tname.size; i++){
    alert(f_el_tname); //this does not even run
}

Почему именно это происходит? Под «рабочим столом» и «android» я имею в виду доступ к экземпляру phonegap на рабочем столе или в Android, поэтому код и контекст практически одинаковы. Есть идеи, почему?

РЕДАКТИРОВАТЬ:

Я думаю, это может произойти, потому что document в document.body.getElementsByTagName("the_tag"); ссылается на документ приложения, а не на документ внутри приложения. Как я могу получить документ в браузере внутри функции обратного вызова loadtop?

Окна открываются var ref = window.open(...);

РЕДАКТИРОВАТЬ 2: по запросу, вот код

var ref = window.open(url,'_blank','location=yes,toolbar=no,hidden=yes','closebuttoncaption=Return');

ref.addEventListener('loadstop', function(){

    var f_el_tname = ref.document.body.getElementById("l_fdb");
        //the above gives an error

});
7 голосов | спросил Fane 22 MarpmTue, 22 Mar 2016 18:12:54 +03002016-03-22T18:12:54+03:0006 2016, 18:12:54

1 ответ


0

Попробуйте сделать это с помощью inappbrowser.executeScript :

var ref = cordova.InAppBrowser.open(url,'_blank','location=yes,toolbar=no,hidden=yes');

ref.addEventListener('loadstop', function() {

    var code = '(function(){ return document.getElementById("l_fdb"); })()';
    ref.executeScript({code: code}, function(results) {
        console.log('l_fdb: ' + results);
    });
});

Примеры использования executeScript можно найти в тесты плагинов .

ответил daserge 25 MarpmFri, 25 Mar 2016 16:09:28 +03002016-03-25T16:09:28+03:0004 2016, 16:09:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132