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

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

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

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


person Ziloo Z    schedule 02.05.2018    source источник
comment
кстати я использую 6.x   -  person Ziloo Z    schedule 02.05.2018
comment
Обновленная сборка EAP с исправлением доступна для загрузки: https://storage.googleapis.com/cloud.teamdev.com/downloads/jxbrowser/eap/jxbrowser-6.21-b6-eap-cross-desktop.-win_mac_linux.zip Это исправление будет включено в следующий официальный выпуск JxBrowser.   -  person Artem Trofimov    schedule 21.05.2018


Ответы (1)


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

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

person Artem Trofimov    schedule 03.05.2018