问题标签 [geckoview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
290 浏览

android - 为什么我不能用 GeckoView 完全渲染 html?

我正在尝试从 url 获取 html 并操作 html,然后使用 GeckoView 呈现它

我打算使用 Jsoup 从 url 获取 html 字符串,但这表示使用 Jsoup 获取完整的 html 存在问题

所以我找到了另一种使用 GeckoView 获取 html 的方法(这个api 参考

所以我成功地从一个 url 获取了一个 html 字符串并只用 GeckoView 渲染它

这是代码

问题是网页没有像下面这样完全打印出来

1

我对上面的代码还有一个问题

如果我在下面编写这样的代码,我发现了这一点

geckoSession.loadData() 方法比结果先执行。然后 lambda 函数

我不明白为什么会这样

所以我的问题是

  • 为什么我不能完全打印网页?
  • 为什么那个 lambda 函数执行得这么晚?
0 投票
1 回答
332 浏览

android - 如何在尝试使用 GeckoView 时修复此错误“错误:找不到方法 compileOptions()”?

我正在尝试使用 GeckoView 创建一个 android 应用程序,我使用以下链接作为参考:

https://mozilla.github.io/geckoview/consumer/docs/geckoview-quick-start

我按照示例中的方式执行所有操作,但出现以下错误:

错误:在 org.gradle.api.Project 类型的项目“:app”上找不到参数 [build_5wez28ua38x3wb7sd9hq4qbni$_run_closure4@7323414] 的方法 compileOptions()。

构建.gradle

0 投票
1 回答
380 浏览

gecko - 下拉菜单(选择标签、组合框)在 GeckoView 实现中不起作用

我正在一个 android App 中实现一个 Geckoview 实例。一切看起来都正常工作,Geckoview 能够加载 URL。我的问题是,如果一个网站有一个下拉菜单(选择标签,组合框),当我点击箭头时,选项不会出现。

我尝试使用存储库的不同版本和渠道(夜间、发布、测试版),但我仍然遇到同样的问题。

我在不同的设备和版本的 android 中尝试过。

当我使用使用 Geckoview(参考浏览器,Firefox 预览)的浏览器时,“下拉菜单”工作得很好,所以我认为这是我的 Geckoview 实现中的配置问题。

0 投票
1 回答
641 浏览

android - GeckoView Android Pixel 2 错误

我将 GeckoView 版本 70.0.20190712095934 每晚集成到示例应用程序中。它在我的带有 Android 6 的旧 Nexus 5 上运行良好(-> 网站显示)。但如果我在我的 Pixel 2 上运行相同的应用程序,页面根​​本不会加载。我已经尝试使用最新的稳定 GeckoView 版本,在 Nexus 上一切正常,但在 Pixel 2 上崩溃。使用最新版本,我什至收到 SIGSEV 错误并在 Pixel 2 上完全崩溃。

这是日志:

来自 Github 的所有其他示例 GeckoView 项目也没有工作,同样的错误。任何想法将不胜感激。

0 投票
1 回答
967 浏览

android - 无法初始化 GeckoRuntime | 壁虎查看 | 安卓

我在 onCreat() 中调用 setUpGeckoView 方法,但是当我单击返回并重新打开应用程序时,应用程序崩溃并出现 IllegalStateException 说“无法初始化 GeckoRuntime。它第一次工作只有在我单击返回然后再次打开应用程序时才会崩溃”

日志如下

0 投票
1 回答
998 浏览

android - Android Studio - Gradle 实现 (...) { exclude ... } 不起作用(无法从依赖项中排除组)

我已将以下两个库 (ExoPlayerGeckoView) 添加到我在 Android Studio 中的 Android 应用程序中:

当我开始构建项目时,我意识到这些库一起存在冲突(Gradle Sync 成功):

我得到了很多像上面这样的错误行。所以我决定将该ExoPlayer组排除在外GeckoView(因为我已经有了):

我再次同步(再次同步成功)并开始构建,但没有效果,错误再次发生。

我应该怎么办?

0 投票
1 回答
842 浏览

java - 如何使用壁虎获取当前页面 URL?

我试图让我的 android 网络浏览器只打开特定的 url。因此,我想检查加载的 url 是否符合要求,并据此做一些事情。我看到了很多关于 WebView 的答案,但由于我必须使用开源浏览器(Mozilla Firefox),所以我使用的是 gecko。这是我的代码,我试图用 onLoadRequest 做一些事情,但我不知道如何让它工作。谢谢。

0 投票
1 回答
112 浏览

javascript - 用于操作 Facebook 图像的 Javascript 代码在控制台中有效,但在扩展中无效

我一直在尝试创建一个基于 GeckoView 的网络扩展,用于在我的 facebook 移动提要上下载图像。因此,作为第一次运行,我使用谷歌浏览器中的 Inspect> 控制台来测试一个简单的脚本来检测所有图像并使边框变为红色:

上面的代码行在许多网站(包括 facebook)的 google chrome 控制台中运行良好。但是,当我将 JS 代码打包为 geckoview Web 扩展的内容脚本时,它根本无法工作!以下是我迄今为止尝试过的所有技巧:

  1. 通过包括以下内容确保在文档之后加载 content_script:

    也试过:"run_at": document_idle.

  2. 通过使用确保“X 射线”视力关闭document.wrappedJSObject.getElementsByTagName("img")

  3. 取消注册和重新注册网络扩展。

这些都不起作用。有趣的是,网络扩展适用于除 facebook 之外的所有其他网站!所以我怀疑我有两个问题之一:

  1. Facebook 在隐藏 DOM 方面做得非常好!
  2. GeckoView 无法访问“动态生成”图像元素的 DOM。

任何帮助,将不胜感激 :)

0 投票
1 回答
1454 浏览

android - 实施 GeckoView Web 扩展

我正在尝试在 Android 中为 GeckoView 实现一个 noddy 网络扩展,以简单地在网页上执行一些 javascript,相当于普通 Android WebView 上的 webView.evaluateJavascript(),但是我无法找到任何有用的示例或教程在线的。

我之前曾尝试过 WebView,但是我在登录期间尝试访问错误的站点意味着我无法访问它。但是登录适用于 GeckoView

到目前为止,我已经遵循了这些:

  1. https://sammacbeth.eu/blog/2019/09/04/geckoview-extensions.html

  2. https://mozilla.github.io/geckoview/consumer/docs/web-extensions

  3. https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension

但是,它们似乎有点过时了,即使是 mozilla 自己的文档,因为我使用的 API 不再遵循示例。

我正在使用 GeckoView 的稳定版本:73.0.20200217142647

根据上面的[3],我的文件结构是:

manifest.json 的内容是

'matches' 设置为 '*' 以便它应该匹配导航到的所有页面

checkExtension.js 只包含:

我的 GeckoView 活动是:

但是,页面加载时不会显示任何警报。除了尝试显示警告框之外,我还尝试了一些特定于站点的目标脚本,但是它们都没有工作。

有什么明显的遗漏或任何可能对我有帮助的资源吗?

非常感谢。

0 投票
1 回答
152 浏览

android - 获取 GeckoSession 的标签 ID?

我正在尝试创建 2 个 GeckoSessions 来代表两个选项卡。

我有一个带有背景脚本的网络扩展。我想向每个选项卡的内容脚本发送单独的消息,但为此我需要知道选项卡 ID(我不想将消息发送到所有选项卡,因为每个选项卡都可以加载相同的页面)。

获取每个 GeckoSession 对象的选项卡 ID 的最佳方法是什么?