无法在inAppBrowser中的phonegap中捕获“document。(...)。tagName”

时间:2016-03-22 15:12:55

标签: javascript android cordova

我通过注入的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”,我指的是访问桌面或android中的phonegap实例,因此代码和上下文几乎相同。有什么想法吗?

编辑:

我认为这可能会发生,因为document.body.getElementsByTagName("the_tag");中的文档指的是app文档,而不是inappbrowser中的文档。 如何在loadstop回调中的浏览器中获取文档?

窗口由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

});

1 个答案:

答案 0 :(得分:4)

尝试使用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);
    });
});

可以在the plugin tests中找到executeScript用法的示例。