Читайте localStorage из InAppBrowser - PullRequest
1 голос
/ 21 июня 2019

В приложении, которое я пишу, есть два сценария:

  1. некоторые страницы, на которых пользователь заполняет некоторую форму различной информацией (различные страницы)

  2. экземпляр inAppBrowser, который отображает веб-страницу в Интернете, а не локальную страницу

В «сценарии 1» входные данные хранятся в localStorage с «localStorage.setItem»,

пример:

    var keywords = document.getElementById("keywords").value;

    localStorage.setItem("keywords", keywords);

Я могу правильно получить и отобразить значение из приложения, на каждой странице с

    var keyWord = localStorage.getItem( 'keywords' );

    alert( keyWord );

Чего я хотел бы добиться, так это уметь читать значения из localStorage и использовать их в «сценарии 2».

Объясните: я хотел бы иметь возможность получить доступ и прочитать собранные "ключевые слова" из экземпляра inAppBrowser внутри executeScript, чтобы передать некоторые переменные.

Возможно ли это? Есть идеи?

Спасибо

Mimmo

Я уже пробовал с postmessage, но похоже, что он работает наоборот (inAppBrowser -> app)

1 Ответ

0 голосов
/ 21 июня 2019

Да, вам нужно использовать 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);

А в index.html кордова:

parent.postMessage("test message","*");
...