我已经搜索了这个问题的解决方案,我发现了一个问题,但我发现零响应。我将列出整个情况,因为可能有一个我没有看到的解决方案......
我将HTML文件加载到用户的SD卡上。我正在使用WebView.loadURL(...)将该HTML文件加载到WebView中。这很好用。 HTML导入外部Javascript文件,如下所示:
<script type='text/javascript' src='js/jquery-1.3.2.min.js' />
<script type='text/javascript' src='js/inPractice-utilities.js' />
<script type='text/javascript' src='js/inPractice.js' />
<script type='text/javascript' src='js/mobile/inpractice.ipad.js /'>
当然,这不起作用,因为在SDK 1.0之后,加载此外部代码的能力被认为是安全问题(或者至少我理解它的方式)。我更改了每个HTML文件(有数百个)以使用内联Javascript,并且一切正常。
每个HTML文件都有使用“onClick”事件调用Javascript方法的链接。
<a href="/drug" onclick="return content('drug', {name:'Tamoxifen', pageId:'9475b30a-5a8b-04fa-f975-7fcaeaa0a2cf'});">Tamoxifen</a>
如您所见,当用户点击此链接时,会调用javascript方法“content”。这也很好。
但是,某些文件包含指向“支持资产”的链接,这些链接基本上是单独的HTML页面,除非没有实际页面。这是一个例子:
<a href="/supportingAsset" onclick="return content('supportingAsset', {'html':'<div class='supportingAsset'><p><a href='/drug' onclick='return content('drug', {name:'Tamoxifen', pageId:'9475b30a-5a8b-04fa-f975-7fcaeaa0a2cf'});'>Tamoxifen</a>'});">Supporting Asset</a>
*请注意,我的娱乐中可能存在一些语法问题,但我保证在实际代码中语法都是正确的。
因此,这里的问题是支持资产HTML作为参数包含在对Javascript方法“content”的调用中。为了在用户点击支持资产时显示此内容,我使用...
webView.loadDataWithBaseURL("file://" + baseLocation, html, "text/html", "utf-8", null);
...其中“html”是传递给Javascript方法的HTML,“content”。这个新页面显示正常,但是......如果你在支持资产内容中注意到,有另一个链接可以调用Javascript方法,“内容”。这就是问题所在......
我试过追加......
<script type='text/javascript' src='js/jquery-1.3.2.min.js' />
...将原始HTML加载到webview之前。什么都没有。
我尝试添加内联Javascript方法。什么都没有。
我尝试在pageLoad ...
之后添加Javascript方法 @Override
public void onPageFinished(WebView view, String url) {
if (loadingPageDialog != null) {
loadingPageDialog.dismiss();
}
view.loadUrl("javascript:(function content(path, params) { " +
"document.getElementsByTagName('body')[0].style.color = 'red'; " +
"})()");
}
...没有。
实际问题
有没有人知道我可以注入Javascript方法“内容”的方式,以便现有的“内容”调用有效?请注意,我无法将呼叫更改为“内容”,并且显示支持资产内容的Web视图与原始webview位于不同的活动中。
答案 0 :(得分:0)
我相信你有一个错字。变化,
"file://"
到
"file:///"