2016-06-28 62 views
0

看來我無法從使用inAppBrowser插件加載的網站中選擇DOM元素。當我登錄document.getElementById("input")它是null。我已閱讀的資源將選擇元素視爲微不足道,但我似乎無能爲力。用inAppBrowser選擇DOM元素 - Cordova

下面是我使用的代碼:

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和6.0.0科爾多瓦

回答

0

Frix33了齒輪轉動着他的答案,但我不認爲它具體確定瞭如此張貼我自己的問題。注入頁面的腳本必須是STRING,否則它只是由應用程序執行,這與前面的結果是不同的document,因此也是null

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}) 

}); 

的使用格式用戶可以根據需要通過儘可能多的臺詞:如果你更換{code: obj.func(obj)}與它的工作原理。

1

這對我來說(科爾多瓦6.1.1,1.4.0 inappbrowser,Android平臺)工作:

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

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

...