JsValue, возвращаемое executeJavaScriptAndReturnValue в браузере, имеет нулевой jsContext, если браузер открывается другим браузером с помощью window.open - PullRequest
0 голосов
/ 02 мая 2018

Отладив его, я обнаружил, что это может быть связано с проблемами потоков. Когда собирается открыть новый браузер, OnAddNewContentsMessage и OnDidCreateScriptContextMessage запускаются одновременно в другом потоке. Если я позволю сначала возобновить поток OnAddNewContentsMessage, который позже создаст новый браузер, OnDidCreateScriptContextMessage будет работать правильно, будучи перехваченным новым браузером и создаст поток jsContext, но если я позволю сначала возобновить поток OnDidCreateScriptContextMessage, он не будет перехвачен браузером и не будет jsContext будет создан. Работа в режиме без отладки работает так же, как последний. Наличие нулевого jsContext приведет к тому, что большинство операций над JsValue вызовет исключение NullPointerException.

Эта проблема возникает только в браузерах, открытых другим браузером с помощью window.open (url). Работает нормально, если я обновляю браузер или сразу захожу на URL (набираю или вставляю URL в адресную строку).

================ обновленный ============ Это также работает нормально, если новый браузер открывается по ссылке href. В этом случае OnAddNewContentsMessage и OnDidCreateScriptContextMessage запускаются последовательно

1 Ответ

0 голосов
/ 03 мая 2018

Это известная проблема в JxBrowser, которая будет решена в одной из будущих версий. К сожалению, для текущей версии обходного пути нет.

UDP: проблема исправлена ​​в JxBrowser 6.21.

...