WebView 无法加载 Imgur 相册
Posted
技术标签:
【中文标题】WebView 无法加载 Imgur 相册【英文标题】:WebView fails to load Imgur albums 【发布时间】:2015-10-11 03:30:03 【问题描述】:这是一个奇怪的问题,但我不确定从这里尝试什么。在我的应用程序中,用户可以打开各种链接,为此我提供了一个带有 WebView 的片段。这些链接中有很大一部分是 Imgur 相册,但由于某种原因,相册无法在我的设备或我尝试过的模拟器上的 WebView 中正确加载。我已经设置了一个带有单个 WebView 的应用程序,它在此处显示行为:https://github.com/damien5314/imgur-album-webview。
我在 Chrome 中设置了 WebView 调试,并在 WebView 中并排加载页面,以及在启用了移动仿真的桌面 Chrome 上。在桌面 Chrome 上,页面在收到来自 api.imgur.com 的带有图像列表的响应后加载,然后在页面加载后下载并显示单个图像。在我设备上的 WebView 上,在收到 Imgur API 的响应后,图像永远不会下载。
注意 - 只有 Imgur 专辑 页面会给我带来问题。单个图像加载正常。
mWebView.loadUrl("http://imgur.com/a/2dtj8"); // Album, does not load images
// mWebView.loadUrl("https://imgur.com/X2eInSx"); // Single image, works fine
我想说这是他们在 android 上的 JS 的 Imgur 问题,但由于 JS 被混淆,我的 Web 调试选项受到限制,更不用说我可以在 WebView 中加载 相同的链接在类似的应用程序中,因此必须有某种方法可以使其工作。如果有人在我的代码中发现任何问题,请告诉我,否则将不胜感激有关调试此问题的后续步骤的任何建议。谢谢!
【问题讨论】:
我还没有机会再次研究这个问题,但我可能会尝试进行更多调试,然后可能会与 Imgur 开发人员联系,因为这个问题是他们网站特有的。 我读到这是谷歌的更新,它破坏了 WrbView,它影响了所有应用程序,但是当我测试时,只有我的一切都不起作用 是的,如果我在另一个类似的应用程序中转到相同的链接,看起来他们只是像我一样使用常规的 WebView,但由于某种原因它在他们的应用程序中工作。我可能会进一步调查 WebView 选项,看看是否不需要做一些与 JS 相关的配置(显然我正在启用 JS,但可能比这更深)。 @Spacemonkey 问题是我的 WebView 禁用了 DOM 存储(请参阅我的答案)。 Imgur 在相册页面的 JS 中依赖此功能。 【参考方案1】:嗯,这实际上比最初想象的要容易得多。我没有注意到在 WebView 中加载页面时发生 javascript 错误,而在 Chrome 中加载页面时没有发生这种错误。
Uncaught TypeError: Cannot read property 'getItem' of null
在跟踪 JS 后,我发现这是由于使用了 window.localStorage。除非启用该设置,否则 WebView 中不允许这样做。
mWebView.getSettings().setDomStorageEnabled(true);
感谢这个答案:Android webview & localStorage
【讨论】:
以上是关于WebView 无法加载 Imgur 相册的主要内容,如果未能解决你的问题,请参考以下文章
关于解决 从相册中选择照片后无法剪切图片以及无法加载图片的问题
webview_flutter3.0.4无法加载http图片