我正在将我的 jxbrowser 集成从 4.9x 移植到 6.11.x,我遇到了 JavaScript - JavaBridge 和 IFrame 的问题强>。我使用以下代码正确注册,并在主页中从 js 调用该函数时按预期工作。但是当从 iframe 内的 js 调用该函数时不起作用。
browser.addScriptContextListener(new ScriptContextAdapter() {
@Override
public void onScriptContextCreated(ScriptContextEvent event) {
final Browser browser = event.getBrowser();
JSValue window = browser.executeJavaScriptAndReturnValue("window");
window.asObject().setProperty("resolveMsg", new JSFunctionCallback() {
@Override
public Object invoke(Object... params) {
String msgId = (String) params[0];
Builder builder = WrLocMsg.builder(msgId);
return builder.buildOriginalMessage();
}
});
}
});
最佳答案
通过恢复窗口以这种方式解决:
JSValue window = browser.executeJavaScriptAndReturnValue(event.getJSContext().getFrameId(),"window");
关于javascript - JXBrowser JSFunctionCallback 和 IFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41833843/