javafx-webview不支持indexeddb时怎么办

41 篇文章 0 订阅

背景

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<Document>() {
            @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
     */
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值