在我正在编写的应用程序中,有两种情况:
用户在其中填写各种信息的某些页面的页面(不同页面)
inAppBrowser实例,该实例在Internet上显示网页,而不是本地页面
在“方案1”中,输入数据通过“ localStorage.setItem”存储在localStorage中,
一个例子是:
var keywords = document.getElementById("keywords").value;
localStorage.setItem("keywords", keywords);
我可以在应用中的每个页面中正确获取并显示值,
var keyWord = localStorage.getItem( 'keywords' );
alert( keyWord );
我想要实现的是能够从localStorage读取值并在“方案2”中使用它。
说明:我希望能够从executeScript内部的inAppBrowser实例访问和读取收集的“关键字”,以传递一些变量。
有可能吗?有想法吗?
谢谢
Mimmo
我已经尝试过postmessage,但是它看起来却是相反的方式(inAppBrowser-> app)
答案 0 :(得分:0)
是的,您需要使用executeScript:
let test ;
test.executeScript(
{
code: "let keywords = document.getElementById('keywords').value;
localStorage.setItem('keywords', keywords);"
}, function()
{
let k = localStorage.getItem( 'keywords' );
alert( k );
});
如果以下方法不起作用,请尝试使用此方法:
在浏览器中:
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
// Listen to message from child window
eventer(messageEvent,function(e) {
console.log('parent received message!: ',e.data);
在cordova的index.html中:
parent.postMessage("test message","*");