从InAppBrowser读取localStorage

时间:2019-06-21 07:36:56

标签: javascript cordova variables cordova-plugins inappbrowser

在我正在编写的应用程序中,有两种情况:

  1. 用户在其中填写各种信息的某些页面的页面(不同页面)

  2. 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)

1 个答案:

答案 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","*");