使用inAppBrowser选择DOM元素 - Cordova

时间:2016-06-28 21:30:37

标签: javascript cordova inappbrowser

似乎我无法从使用inAppBrowser插件加载的网站中选择DOM元素。当我记录document.getElementById("input")null。我读到的资源已经将选择元素视为微不足道,但我似乎无法做到。

这是我正在使用的代码:

var obj = {
      link: "https://www.foolink.com",
      input: "barInput",
      func: function(obj) {
          document.getElementById("input").value = obj.input;
      }
}

var ref = cordova.InAppBrowser.open(obj.link, "_blank");
ref.addEventListener('loadstop', function() {

  ref.executeScript({code:obj.func(obj)})

})

之前还有其他人遇到过这个吗?使用jquery来获取选择器可以从index.html文件中获取选择器,而不是inAppBrowser窗口。

*编辑:目前正在使用inAppBrowser 1.4.0和cordova 6.0.0

2 个答案:

答案 0 :(得分:1)

这项工作对我来说(cordova 6.1.1,inappbrowser 1.4.0,Android平台):

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

            ref.executeScript(
                { code: "document.getElementById('inputID')" },
                function (values) {
                    alert(values[0]);
                }
            );

...

答案 1 :(得分:1)

Frix33得到了他的答案,但我不认为它具体确定问题所以张贴我自己的。注入页面的脚本必须是STRING,否则它只是由应用程序执行,这是一个不同的document因此之前的null结果。如果您将{code: obj.func(obj)}替换为:

,则可以使用它
var codePass = "document.getElementById('input').value = '"+ obj.input +"';"
var ref = cordova.InAppBrowser.open(obj.link, "_blank", "location=yes");
ref.addEventListener('loadstop', function(event) {

   ref.executeScript({code:codePass})

});

您可以使用该格式根据需要传递尽可能多的脚本行。