小编Cat*_*tch的帖子

对于loadUrl上的javascript getElementById,Android WebView始终返回null

我尝试从android客户端应用程序填写webview中的表单.我知道它应该如何工作,但getElementById总是为我返回null.我在不同的网站上试过.

以下是www.google.com的示例.

MyWebView view = new MyWebView(this);
view.getSettings().setJavaScriptEnabled(true);
view.loadUrl("http://www.google.com");
view.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView v, String url) {
        v.loadUrl(url);
        return true;
    }
    @Override
    public void onPageFinished(WebView v, String url) {
        v.loadUrl("javascript:document.getElementById('mib').value = 'aaa';");              
    }
});
setContentView(view);
Run Code Online (Sandbox Code Playgroud)

和MyWebView类(仅供参考).

class MyWebView extends WebView {
    Context context;
    public MyWebView(Context context) {
        super(context);
        this.context = context;
    }
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // do some multi touch stuff
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

我总是得到错误:

09-01 04:35:26.453: I/chromium(2962): [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set …
Run Code Online (Sandbox Code Playgroud)

javascript java android webview

9
推荐指数
2
解决办法
2万
查看次数

JavaFX显示加载对话框以进行更长时间的操作

我在Controller类中进行了一些操作可能需要一些时间.所以我想在此操作运行时显示加载对话框.

我试过这个:

Platform.runLater(new Runnable() {
  @Override
  public void run() {
     loadingDialog.show();
  }
});

Boolean opSuccess = myService.operate();

Platform.runLater(new Runnable() {
   @Override
   public void run() {
     loadingDialog.hide();
   }
});

if (opSuccess) {
   // continue
}
Run Code Online (Sandbox Code Playgroud)

现在,问题是,loadingDialog永远不会显示.UI只会阻塞一段时间,而不是继续"//继续".

看来,阻塞操作(操作)阻止了runLater调用?

我还尝试了CoundDownLatch,等待loadDialog.show()完成,然后再运行myService.operate().但latch.await()方法永远不会完成.

所以我的问题是,在myService.operate()完成并返回true或false之前,我如何显示loadingDialog?我是否必须将operate()调用放入另一个线程并运行异步或是否有更简单的方法?

感谢帮助.

concurrency asynchronous javafx runnable

4
推荐指数
1
解决办法
6279
查看次数

JavaFX:通过CSS设置MenuItem的图标/图形

我想通过CSS设置MenuItem的图标.我搜索了很多并尝试了很多,现在没有任何成功.

这是一个小的FXML示例:

<MenuBar>
  <menus>
    <Menu text="File">
      <items>
        <MenuItem text="Open" styleClass="iconOpen" />
        <MenuItem text="Save" />
        <MenuItem text="Exit" />
      </items>
    </Menu>
  </menus>
</MenuBar>
Run Code Online (Sandbox Code Playgroud)

我在CSS中使用:

.iconOpen {
  -fx-background-color: red;
  -fx-graphic: url("open.png");
}
Run Code Online (Sandbox Code Playgroud)

因此,MenuItem只有红色背景颜色.但没有图标.

我可以直接在FXML中将图标作为ImageView for MenuItem集成,但我不能用CSS来设置它.但我想将样式(css)与结构(fxml)分开.

也许有人可以给我一个提示.我不知道我在这里做错了什么.

非常感谢!

css javafx fxml

1
推荐指数
1
解决办法
5017
查看次数

标签 统计

javafx ×2

android ×1

asynchronous ×1

concurrency ×1

css ×1

fxml ×1

java ×1

javascript ×1

runnable ×1

webview ×1