背景故事(或我想做的事)
我的应用中有一个webview,它从assets文件夹中加载一个html文件。该文件中包含2个iframe。
然后用户在应用程序中导入一些zip文件,其中包含要在这些iframe中加载的其他文件。我通过将他们的file:// urls传递给主页面上的javascript函数(带有2个iframe的函数)来加载这些文件,其余的是javascript。然后主页面在用户文件加载到iframe之后注入一些额外的js和javascript。一切都很好。
问题
一切都很好。除非文件是xhtml文件。注入的javascript有一些dom操作函数,当文件作为text / xhtml加载时不起作用。我有使用chrome嵌入式框架的相同应用程序的pc版本,我通过编写一个自定义资源加载器来解决这个问题,该加载器加载所有带有text / html mimetype的xhtml文件。
到目前为止我尝试了什么
我试图在Android版本中做同样的事情。除了我无论如何都没有在java端的webview中定位iframe。
我正在使用shouldOverrideUrlLoading(WebView view, String url)
并返回true,如果它是.xhtml网址。我想(因为CEF中函数的对应部分),该函数中的第一个arg将是iframe并使用loadDataWithBaseUrl
。事实证明,这不是iframe,而是主要的webview本身。
问题
无论如何都要从java加载数据到iframe,具有类似的功能吗? 如果没有,你有任何关于传输文本/ HTML而不是text / xhtml文件的建议。
或者我在javascript方面可以做些什么?
答案 0 :(得分:0)
好,
通过在导入时将.xhtml文件重命名为.html文件解决了这种情况。
但是仍然缺乏从java案例中访问iframe的webviews。 通过使用单个网页浏览而不是iframe来解决这个问题。
我想我必须使用部分铬源(ChromeView)才能访问内部框架。虽然api与WebView不相似或兼容,但我可以使用chromeviews自带api。