- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经从 https://bitbucket.org/chromiumembedded/java-cef/overview 构建了 java-cef ,但我仍然在 docs 和 javadoc 中找不到任何有关如何访问 DOM 文档和加载页面元素的信息。
我需要通过 document.getElementsByClassName("example");
、document.getElementsByTagName("div");
等方式访问元素。
类似于 JSoup - https://jsoup.org/cookbook/extracting-data/selector-syntax :
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
Elements links = doc.select("a[href]"); // a with href
Elements pngs = doc.select("img[src$=.png]");
Java-CEF中有同样的功能吗?
谢谢!
最佳答案
您需要将加载处理程序附加到 CEF 客户端,并在处理程序内调用 CefBrowser::executeJavaScript(String code)
,例如:
cefClient.addLoadHandler(new LoadHandler());
...
class LoadHandler extends CefLoadHandlerAdapter {
@Override
public void onLoadEnd(CefBrowser browser, int frameId, int status) {
String jscode = "var x = document.getElementsByClassName('example')";
browser.executeJavaScript(jscode);
}
}
更新
然后,如果您想在 Java 代码中接收来自浏览器脚本的事件,则需要使用 CefBrowser::executeJavaScript(String code)
注册一个调用 cefQuery
,在单个参数中传递所有必要的数据,并使用消息路由器接收它,例如:
CefMessageRouter msgRouter = CefMessageRouter.create();
msgRouter.addHandler(new MessageRouterHandler(), true);
cefClient.addMessageRouter(msgRouter);
...
browser.executeJavaScript("cefQuery({request: 'Hello World'})");
...
class MessageRouterHandler extends CefMessageRouterHandlerAdapter {
@Override
public boolean onQuery(CefBrowser browser, long query_id, String request, boolean persistent, CefQueryCallback callback) {
System.out.println(request); // prints "Hello World"
return true;
}
}
关于Java CEF - 是否可以访问 DOM 文档和加载页面的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41872128/
我在 Delphi 10.1 的项目中使用 CEF 3.2623.1401.gb90a3be (Chromium 49.0.2623.110)。 (我必须使用相当旧版本的 CEF/Chromium 才
我想使用CEF来控制Flash应用程序,所以我需要在没有JavaScript的情况下模拟MouseDown和KeySend。我正在使用离屏渲染。这是我尝试过的: managedCefBrowserAd
我有一个 Chromium 嵌入式框架 (CEF) 应用程序,我们希望在客户端 JavaScript 端与浏览器端之间进行通信。到目前为止,我们有可能使用通用消息路由器 GenericMessageR
我的应用程序无法构建甚至运行。它给我一个创建 CEF 浏览器失败的错误。 直到今天,一切都运行良好。我按照此链接中的说明再次卸载并安装了 CEF:Big Changes and CEF但它仍然给了我错
首先,我在gitter和github讨论板以及wiki页面中进行了搜索,但仍然没有任何进展.. 所以我第一次在这里问这个问题......: 最后也是最好的事情是我尝试将对象暴露给 javascript
我想要使用 CEF 渲染网页的应用程序的 html 部分(例如:类 Chrome_RenderWidgetHostHWND)的屏幕截图。 尝试使用 BitBlt和 PrintWindow但只能捕获黑屏
有什么方法可以检测我的 JS 代码是在真正的浏览器中运行,还是在 CEF 或 Electron 等工具包中运行? 最佳答案 如果您可以控制托管 CEF 控件的应用程序,您可以注册一个要绑定(bind)
我正在使用原始 WinAPI 在 C++ 上开发一个应用程序,它使用 CEF 3 来显示 UI。问题在于此 UI 嵌套在弹出窗口中(没有标题栏和关闭/最小化按钮)。所以我想让一些客户区像标题一样,用户
您能帮我确定 chromium 嵌入式框架(cef)中支持的 ECMAScript 版本吗? 我想使用 ECMAScript 6。 最佳答案 这取决于相应的 Chromium 版本:https://c
我是 CEF 的新手,我正在尝试在 ubuntu 12.04 x64 上创建新的无边界浏览器(仅用于网页查看)。目前我已经尝试过这种方式(gtk 顶级窗口 -> 禁用装饰 -> 将父级设置为以前创建的
我想从我的 exe 文件中嵌入的资源加载 HTML。我在 Windows 8.1 上使用 C++ 和 CEF3。 我看过 this article它似乎正是我要找的东西,但它与 CefSharp 有关
今天我正在尝试使用 cefpython 开发一个 UI,它允许我嵌入一个 web 浏览器并通过 javascript 绑定(bind)与其交互。 我正在使用它在 Windows 平台上进行开发。为此,
我创建一个浏览器: browser = cef.CreateBrowserSync(url=os.path.dirname(os.path.abspath(__file__))+'\\gui.html
有没有办法在 CEF Python 中添加代理身份验证? 我能找到的最佳答案是 here 。问题是代码是用 C# 编写的,我无法将其转换为 Python。 最佳答案 CEF Python 目前不支持引
我们想从 MFC dll (Visual Studio 2015) 中显示一些浏览器窗口。不幸的是,一旦我们卸载 CEF,它就会崩溃。我们发现了非常相似的问题,但从未找到答案。 为了更好地了解问题,我
今天我正在使用 Chromium Embedded Framework 3。 我已设置、编译和执行所有内容。一切正常。 现在我想在呈现所有内容并执行 JavaScript 后读取页面源代码。我还想从离
在 Windows 上,我尝试使用 CEF(Chromium 嵌入式框架)创建一个窗口应用程序,其父窗口是透明的,其子窗口是不透明的(我想要一个圆角和一个指向子窗口中的状态栏)。类似于: 我尝试使用
我有一个包含 2 个标签页的应用程序。应用程序的容器是用 native 代码开发的,CEF 已用于在其中一个选项卡中打开 html 页面。当我从选项卡 1( native )切换到选项卡 2(CEF)
我在虚幻引擎中使用 cefclient。当您在普通的 chrome 浏览器中拖动任何图像时,它会提供图像预览。 但是,当我尝试在 cefclient 中做同样的事情时,它没有工作。所以我尝试下载 ce
我目前有这个正则表达式: ?P\w+)=(?P[a-zA-Z0-9-_:/@. ]+ 输入第 1 行:event=1921;json={"source":"A","location":B":"fold
我是一名优秀的程序员,十分优秀!