使用 inAppBrowser 选择 DOM 个元素 - Cordova
Selecting DOM elements with inAppBrowser - Cordova
我似乎无法从使用 inAppBrowser 插件加载的网站中 select DOM 元素。当我记录 document.getElementById("input")
时,它是 null
。我读过的资源将 selecting 元素视为微不足道的,但我似乎做不到。
这是我使用的代码:
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 获取 selectors on 给我来自 index.html 文件的 selectors,而不是 inAppBrowser window.
*编辑:目前使用 inAppBrowser 1.4.0 和 cordova 6.0.0
这对我有用(cordova 6.1.1,inappbrowser 1.4.0,平台 Android):
...
ref.addEventListener('loadstop', function () {
ref.executeScript(
{ code: "document.getElementById('inputID')" },
function (values) {
alert(values[0]);
}
);
...
Frix33 的回答让齿轮转动起来,但我认为它没有具体指出问题,所以发布了我自己的问题。注入页面的脚本必须是字符串,否则它只是由应用程序执行,这是一个不同的 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})
});
您可以使用该格式根据需要传递任意数量的脚本行。
我似乎无法从使用 inAppBrowser 插件加载的网站中 select DOM 元素。当我记录 document.getElementById("input")
时,它是 null
。我读过的资源将 selecting 元素视为微不足道的,但我似乎做不到。
这是我使用的代码:
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 获取 selectors on 给我来自 index.html 文件的 selectors,而不是 inAppBrowser window.
*编辑:目前使用 inAppBrowser 1.4.0 和 cordova 6.0.0
这对我有用(cordova 6.1.1,inappbrowser 1.4.0,平台 Android):
...
ref.addEventListener('loadstop', function () {
ref.executeScript(
{ code: "document.getElementById('inputID')" },
function (values) {
alert(values[0]);
}
);
...
Frix33 的回答让齿轮转动起来,但我认为它没有具体指出问题,所以发布了我自己的问题。注入页面的脚本必须是字符串,否则它只是由应用程序执行,这是一个不同的 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})
});
您可以使用该格式根据需要传递任意数量的脚本行。