當前位置: 首頁>>代碼示例>>Java>>正文


Java WebEngine.setOnAlert方法代碼示例

本文整理匯總了Java中javafx.scene.web.WebEngine.setOnAlert方法的典型用法代碼示例。如果您正苦於以下問題:Java WebEngine.setOnAlert方法的具體用法?Java WebEngine.setOnAlert怎麽用?Java WebEngine.setOnAlert使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在javafx.scene.web.WebEngine的用法示例。


在下文中一共展示了WebEngine.setOnAlert方法的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: setup

import javafx.scene.web.WebEngine; //導入方法依賴的package包/類
public void setup() {
    this.dialog = new Dialog(this.root.getScene().getWindow());
    this.pluginLoader = new PluginLoader(this.dialog, this.logger);

    WebEngine webEngine = this.htmlRoot.getEngine();
    webEngine.setOnAlert(event -> this.dialog.info(event.getData()));
    webEngine.load(getClass().getResource("/page/index.html").toString());

    this.htmlRoot.setFontSmoothingType(FontSmoothingType.GRAY);
    this.htmlRoot.setContextMenuEnabled(false);

    webEngine.getLoadWorker().stateProperty().addListener(
            (ov, oldState, newState) -> {
                if (newState == State.SUCCEEDED) this.onLoaded();
            });
}
 
開發者ID:nanase,項目名稱:Nanasetter,代碼行數:17,代碼來源:MainController.java

示例2: createWebView

import javafx.scene.web.WebEngine; //導入方法依賴的package包/類
public static WebEngine createWebView(FXCanvas canvas) {
	canvas.setLayout(new FillLayout());
	WebView view = new WebView();
	// When the WebEngine is initialized a CookieHandler is set, which has
	// errors reading multi value cookies, therefore set to null again
	CookieHandler.setDefault(null);
	Scene scene = new Scene(view);
	canvas.setScene(scene);
	WebEngine webkit = view.getEngine();
	webkit.setJavaScriptEnabled(true);
	webkit.setOnAlert(e -> {
		Logger log = LoggerFactory.getLogger(UI.class);
		log.error("JavaScript alert: {}", e.getData());
	});
	return webkit;
}
 
開發者ID:GreenDelta,項目名稱:olca-app,代碼行數:17,代碼來源:UI.java

示例3: urlChangeLis

import javafx.scene.web.WebEngine; //導入方法依賴的package包/類
public final void urlChangeLis(final WebEngine engine, final TextField urlField, final Tab tab) {
    engine.getLoadWorker().stateProperty().addListener((ov, oldState, newState) -> {
        if (newState == Worker.State.FAILED) {
            File f = new File(new File(saveDir, engine.getLocation().replaceAll("[ : / . ]", "-").trim()),
                    engine.getLocation().replaceAll("[ : / . ]", "-").trim() + ".html");
            if (f.exists()) {
                try {
                    engine.load(f.toURI().toURL().toExternalForm());
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                }
                return;
            }
            engine.loadContent("Unable to load " + engine.getLocation().trim());
            return;
        }
    });

    engine.locationProperty().addListener((o,oU,nU) -> ZunoZapWebView.this.changed(engine, urlField, tab, oU, nU));

    engine.setOnAlert((popupText) -> {
        boolean bad = false;
        if (popupText.toString().toLowerCase().contains("virus")) {
            bad = true;
            JOptionPane.showMessageDialog(null, "The site you are visting has tryed to create an popup with the word 'virus' in it, Please be carefull on this site", "ZunoZap AntiPopupVirus", JOptionPane.WARNING_MESSAGE);
        }
        if (allowPluginEvents()) for (PluginBase pl : p.plugins) pl.onPopup(bad);

        JOptionPane.showMessageDialog(null, popupText.getData(), "JS Popup", JOptionPane.INFORMATION_MESSAGE);
    });
    engine.titleProperty().addListener((ov, o, n) -> tab.setText(n));
}
 
開發者ID:ZunoZap,項目名稱:zunozap,代碼行數:33,代碼來源:ZunoZapWebView.java

示例4: setWebEngineHandlers

import javafx.scene.web.WebEngine; //導入方法依賴的package包/類
/**
 * ウェブエンジンの各種ハンドラを設定する.
 *
 * @param engine
 *            対象のウェブエンジン
 */
private void setWebEngineHandlers(WebEngine engine) {
    // JavaScriptのalert, confirm, prompt関數に対応するハンドラ
    engine.setPromptHandler(createPromptHandler());
    engine.setConfirmHandler(createConfirmHandler());
    engine.setOnAlert(createAlertHandler());

    // 別ブラウザウィンドウを開くハンドラ
    engine.setCreatePopupHandler(createPopupHandler(engine));
}
 
開發者ID:seraphy,項目名稱:EmbeddedTomcatLauncher,代碼行數:16,代碼來源:EmbeddedServerBrowserFrame.java

示例5: connectBackendObject

import javafx.scene.web.WebEngine; //導入方法依賴的package包/類
/**
 * Registers a backend Java object as a Javascript variable.
 * The real connection to the webEngine comes when the javascript performs
 * an special "alert" message by invoking
 * "alert('__CONNECT__BACKEND__varname')" where varname is the javascript
 * variable we want to make available.
 *
 * The call to this function has to be performed before the engine loads the
 * first page (where the alert call should take place).
 *
 * @param webEngine The webEngine to register the new variable.
 * @param varname The name of the variable in javascript.
 * @param backend The Java backend object.
 */
public static void connectBackendObject(
        final WebEngine webEngine,
        final String varname,
        final Object backend) {

    registerBackendObject(webEngine, varname, backend);

    // create a onAlertChangeListener. We always want to listen
    // to onAlert events, since via this event, the javascript front-end
    // will send us an special "alert" message asking to connect the
    // backend object as soon as possible(*).
    // However, if the programmer also wants to set
    // his own onAlert handler for this web engine,
    // we will create a handlerwrapper with our
    // behavior plus the programmer's one.

    // (*) It was impossible for me to re-connect the backend object
    // when the users navigates from one page to another page where the
    // backend object was also needed. The navigation erases any javascript
    // variables, so the backend has to be reconnected. However,
    // The recommended state change listeners on
    // webEngine were executed too late, after javascript code asking for the
    // backend object is executed, so it was not a solution.
    // The only way I found is to place a custom javacript "signaling"
    // code to ask Java to reconnect the backend object.
    // The solution was "alert", because we can listen to alert calls from
    // javascript, so via an special "alert" message, we can connect the
    // backend object again.
    // It is not a bad solution, because the programmer has only to inlude
    // a simple additional script (such as "mybackend.js") in the page
    // before any other scripts uses the backend variable.
    if (!webEnginesWithAlertChangeListener.contains(webEngine)) {
        if (webEngine.getOnAlert() == null) {
            webEngine.setOnAlert(new AlertEventHandlerWrapper(webEngine,
                    null));
        }

        webEngine.onAlertProperty().addListener(
                new ChangeListener<EventHandler<WebEvent<String>>>() {

                    @Override
                    public void changed(
                            ObservableValue
                                    <? extends EventHandler<WebEvent<String>>> arg0,
                            EventHandler<WebEvent<String>> previous,
                            final EventHandler<WebEvent<String>> newHandler) {

                        if (!changing) { // avoid recursive calls
                            changing = true;
                            webEngine.setOnAlert(
                                    new AlertEventHandlerWrapper(
                                            webEngine,
                                            newHandler));
                            changing = false;
                        }
                    }
                });
    }
    webEnginesWithAlertChangeListener.add(webEngine);
}
 
開發者ID:jamf,項目名稱:HealthCheckUtility,代碼行數:75,代碼來源:JavaToJavascriptBridge.java

示例6: initEngine

import javafx.scene.web.WebEngine; //導入方法依賴的package包/類
private void initEngine(){
    engine = new WebEngine();
    engine.setOnAlert(this);
    correctHandlerReturned = (this == engine.getOnAlert());
}
 
開發者ID:teamfx,項目名稱:openjfx-8u-dev-tests,代碼行數:6,代碼來源:AlertTest.java

示例7: SearchViewPane

import javafx.scene.web.WebEngine; //導入方法依賴的package包/類
public SearchViewPane() {
	
	ExileToolsLadderService exileToolsLadderService = new ExileToolsLadderService();
	exileToolsLadderService.restart();
	
	// FIXME, hacky
	if (!Main.DEVELOPMENT_MODE) {
		while (exileToolsLadderService.resultProperty().getValue().equals("{}")) {
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				throw new RuntimeException(e);
			}
		}
	}
	// FIXME, hacky
	
	SearchViewRendererCallback blueMarlineCallback = new SearchViewRendererCallback();
	
	if (Main.RAW_RENDERER_ENABLED) {
		RawSearchViewRenderer viewRenderer = new RawSearchViewRenderer(); 
		viewRenderer.searchProperty().bind(search);
		getChildren().add((Node)viewRenderer);
	} else {
		WebView webView = new WebView();
		WebEngine webEngine = webView.getEngine();

		search.addListener((observ, oldVal, newValue) -> {
			if (newValue != null) {
				String renderer = search.getValue().getSearchFile().getRenderer();
				
				if (renderer.startsWith("renderers")) {
					renderer = Paths.get(renderer).toAbsolutePath().toUri().toString();
				}
				webEngine.load(renderer);
			}
		});
		
		webEngine.getLoadWorker().stateProperty().addListener((observ, oldVal, newVal) -> {
			if (newVal.equals(Worker.State.SUCCEEDED)) {
				JSObject window = (JSObject) webEngine.executeScript("window");
				window.setMember("blueMarlineCallback", blueMarlineCallback);
				window.setMember("searchFile", search.getValue().getSearchFile());
				window.setMember("searchResult", search.getValue().getSearchResult());
				window.setMember("ladderOnlinePlayers", exileToolsLadderService.resultProperty().getValue());
				webEngine.executeScript("onBluemarlineReady()");
			}
		});
	
		
		// setup callbacks
		webEngine.setOnAlert(e -> Dialogs.showInfo(e.getData()));
		
		getChildren().add(webView);
	}
	
}
 
開發者ID:bluemarlinexile,項目名稱:bluemarlin,代碼行數:58,代碼來源:SearchViewPane.java

示例8: connectBackendObject

import javafx.scene.web.WebEngine; //導入方法依賴的package包/類
/**
 * Registers a backend Java object as a Javascript variable.
 * The real connection to the webEngine comes when the javascript performs
 * an special "alert" message by invoking 
 * "alert('__CONNECT__BACKEND__varname')" where varname is the javascript
 * variable we want to make available.
 * 
 * The call to this function has to be performed before the engine loads the
 * first page (where the alert call should take place).
 * 
 * @param webEngine The webEngine to register the new variable.
 * @param varname The name of the variable in javascript.
 * @param backend The Java backend object.
 */
public static void connectBackendObject(
		final WebEngine webEngine,
		final String varname, 
		final Object backend) {
	
	registerBackendObject(webEngine, varname, backend);
	
	// create a onAlertChangeListener. We always want to listen
	// to onAlert events, since via this event, the javascript front-end
	// will send us an special "alert" message asking to connect the 
	// backend object as soon as possible(*). 
	// However, if the programmer also wants to set
	// his own onAlert handler for this web engine, 
	// we will create a handlerwrapper with our
	// behavior plus the programmer's one.
	
	// (*) It was impossible for me to re-connect the backend object
	// when the users navigates from one page to another page where the
	// backend object was also needed. The navigation erases any javascript
	// variables, so the backend has to be reconnected. However,
	// The recommended state change listeners on
	// webEngine were executed too late, after javascript code asking for the
	// backend object is executed, so it was not a solution.
	// The only way I found is to place a custom javacript "signaling" 
	// code to ask Java to reconnect the backend object.
	// The solution was "alert", because we can listen to alert calls from
	// javascript, so via an special "alert" message, we can connect the
	// backend object again.
	// It is not a bad solution, because the programmer has only to inlude
	// a simple additional script (such as "mybackend.js") in the page 
	// before any other scripts uses the backend variable.
	if (!webEnginesWithAlertChangeListener.contains(webEngine)) {
		if (webEngine.getOnAlert() == null) {
			webEngine.setOnAlert(new AlertEventHandlerWrapper(webEngine,
					null));
		}
		
		webEngine.onAlertProperty().addListener(
			new ChangeListener<EventHandler<WebEvent<String>>>() {

				@Override
				public void changed(
						ObservableValue
						<? extends EventHandler<WebEvent<String>>> arg0,
						EventHandler<WebEvent<String>> previous,
						final EventHandler<WebEvent<String>> newHandler) {

					if (!changing) { // avoid recursive calls
						changing = true;
						webEngine.setOnAlert(
							new AlertEventHandlerWrapper(
									webEngine, 
									newHandler));
						changing = false;
					}
				}
		});
	}
	webEnginesWithAlertChangeListener.add(webEngine);
}
 
開發者ID:lipido,項目名稱:javafxwebview,代碼行數:75,代碼來源:Java2JavascriptUtils.java


注:本文中的javafx.scene.web.WebEngine.setOnAlert方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。