背景
webview中加载html,html的js中使用了indexeddb,但是当前javafx webview不支持indexededdb。会报错 Console: [https://cc.c3663fbd.js:14] TypeError: indexedDB.open is not a function. (In ‘indexedDB.open(“ddd”,l)’, ‘indexedDB.open’ is undefined)
处理过程
思路是,找到一个java版本的indexddb…
2022年11月30日09:18:56 研究中
package sample;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
import com.mohamnag.fxwebview_debugger.DevToolsDebuggerServer;
import com.sun.javafx.scene.web.Debugger;
import com.sun.javafx.webkit.WebConsoleListener;
import com.sun.javaws.IconUtil;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Worker;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.scene.web.WebEvent;
import javafx.scene.web.WebView;
import javafx.util.Callback;
import netscape.javascript.JSObject;
import org.w3c.dom.Document;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
class indexedDB{
private void open1(String var1,String var2){
System.out.println(2222);
}
private String open(String var1,String var2){
return "123123";
}
private boolean onsuccess(){
return true;
}
}
public class Controller {
@FXML
private WebView webView;
indexedDB ind=new indexedDB();
public void initialize() throws Exception {
webView.getEngine().setJavaScriptEnabled(true);
JSObject win = (JSObject) webView.getEngine().executeScript("window");
win.setMember("indexedDB", ind);// 设置变量
System.out.println(34234);
/**
* Console: [https://cc.c3663fbd.js:14] TypeError: indexedDB.open is not a function. (In 'indexedDB.open("ddd",l)', 'indexedDB.open' is undefined)
*/
WebConsoleListener.setDefaultListener(new WebConsoleListener() {
@Override
public void messageAdded(WebView webView, String message, int lineNumber, String sourceId) {
System.out.println("Console: [" + sourceId + ":" + lineNumber + "] " + message);
}
});
webView.getEngine().documentProperty().addListener(new ChangeListener
@Override
public void changed(ObservableValue extends Document> observable, Document oldValue, Document newValue) {
/**
* if (!document.getElementById('FirebugLite')){
* E = document['createElement' + 'NS'] && document.documentElement.namespaceURI;
* E = E ? document['createElement' + 'NS'](E, 'script') : document['createElement']('script');E['setAttribute']('src', 'https://xxx.js');
* (document['getElementsByTagName']('head')[0] || document['getElementsByTagName']('body')[0]).appendChild(E);
* }
*/
// webView.getEngine().executeScript("if(!window.indexedDB) {console.log(\"Your browser does not support indexedDB.\");}");
});
URL url = getClass().getResource("xx1.html");
webView.getEngine().load("https://88");
// DevToolsDebuggerServer.startDebugServer(webView.getEngine().impl_getDebugger(), 51742);
}
/**
* 2022年11月28日15:44:10
* 1. webview不能加载页面,是因为不能使用indexeddb
* 2. 使用unirest请求报错:unable to find valid certification path to requested target
* 参考https://blog.csdn.net/qq_31122833/article/details/107176707
* cd C:\Program Files\Java\jdk1.8.0_341\jre\lib\security
* keytool -import -keystore cacerts -file C:\Users\88\Desktop\dm\98
* 密码changeit
*/
}
文章链接
发表评论