1
[僅供參考,如果你看到的頁面是開起來也一樣,下一個也同這就是爲什麼我要停止上述的WebView的導航因此它可以在開回落僅一] [1]如何使用platform.runlater()在一個webview中禁用鏈接/超鏈接/導航,並在java中的另一個webview中打開該鏈接/超鏈接/導航
public class HV extends Application
{
@Override
public void start(Stage primaryStage) throws Exception
{
StackPane root = new StackPane();
HBox hbox = new HBox(30); // create a HBox to hold 2 vboxes
// create a vbox with a textarea that grows vertically
VBox vbox = new VBox(10);
final WebView img = new WebView();
final WebEngine webEngineImg = img.getEngine();
vbox.getChildren().addAll(img);
// create a vbox that grows horizontally inside the hbox
VBox vbox2 = new VBox();
final WebView browser = new WebView();
final WebEngine webEngine = browser.getEngine();
final WebView browser1 = new WebView();
final WebEngine webEngine1 = browser1.getEngine();
webEngine1.getLoadWorker().stateProperty()
.addListener(new ChangeListener<Worker.State>() {
@Override
public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState) {
if (newState == Worker.State.SUCCEEDED) {
primaryStage.setTitle(webEngine1.getLocation());
String trgurl=webEngine1.getLocation();
System.out.println(trgurl);
if(trgurl.matches("(.*)img=(.*)")){
int n = trgurl.indexOf("img=");
//String str1 = Integer.toString(n);
System.out.println(n+4);
int len = trgurl.length();
System.out.println("string length is: "+trgurl.length());
System.out.println(trgurl.substring(n+4,len));
String find = "file:"+trgurl.substring(n+4,len);
System.out.println(find);
webEngineImg.load(find);
//webEngine1.load(find);// this is loading image
if (trgurl.matches("(.*)target=wb2(.*)")){
//int n1= trgurl.indexOf("target=");
//String str1 = Integer.toString(n);
// System.out.println(n1+7);
// System.out.println(trgurl.substring(n1+7,98));
boolean cancel();
webEngine.load("url");
}
}
}
}
});
webEngine1.load("url");
// String url = "https://eclipse.org";
// Load a page from remote url.
// webEngine.load(url);
vbox2.setPadding(new Insets(3));
vbox2.setSpacing(3);
vbox2.getChildren().addAll(browser1,browser);
HBox.setHgrow(vbox2, Priority.ALWAYS);
hbox.setPadding(new Insets(20));
// StackPane.setMargin(hbox, new Insets(20));
hbox.getChildren().addAll(vbox, vbox2);
root.getChildren().add(hbox);
Scene scene = new Scene(root, 500, 300); // the stack pane is the root node
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args)
{
Application.launch(args);
}
}
的debbuging - 這是我的代碼有三個在webview1中的webview完整的網站打開和在webviewimg中只有來自webview1的操作打開和在web視圖中的圖像我想加載一個編輯網址,但爲此我必須在webview1中禁用該鏈接的導航,以便我可以在webview中打開它我有tr Ÿplatform.runlater後運行在其它的WebView但即時得到錯誤狀態不能在串改變該鏈接,這是一段代碼,在那裏我嘗試添加
webEngine1.getLoadWorker().stateProperty()
.addListener(new ChangeListener<Worker.State>() {
@Override
public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState) {
if (newState == Worker.State.SUCCEEDED) {
primaryStage.setTitle(webEngine1.getLocation());
String trgurl=webEngine1.getLocation();
System.out.println(trgurl);
if ((address.getQuery() + "").contains("target=true"))
{
Platform.runLater(() -> {
grid_layout.getChildren().remove(webEngine1);
grid_layout.add(webEngine1, 0, 1);
webEngine1.load(oldState);
或如何在Java中插入了jQuery防止導航代碼在這裏
document.addEventListener('click', function(e) {
e.stopPropagation();
}, true);
我有acheve禁止使用jQuery嵌入JavaFX的鏈接,但它禁用點擊我也不想禁用點擊我只是想如果我點擊鏈接它不應該打開在同一個webview它應該打開在另一個目標webview是有任何類的PLZ幫助需要 –