我想在Android var layout = {
menu: {
type: 0,
x: 50,
y: 50,
w: 50,
h: 50
},
name: {
type: 2,
str: "name",
get x() { return 50+layout.menu.x },
get y() { return 40+layout.menu.y },
h: 25
}
};
// Demo
console.log(layout.name.x);
中加载网页时应用自定义JS代码。我有一个带有自定义layout.name.x
的{{1}},覆盖了WebView
,我使用
WebView
效果很好。但是,有些页面在单击链接后会“动态”加载页面(使用AJAX?),并且不会调用WebViewClient
,因此不会应用我们的自定义JS代码。
此类页面的示例为https://reddit.com/r/Nature(您需要使用Chrome开发人员工具并设置移动视图),点击该线程即可动态加载线程。
如何检测这些页面加载?
答案 0 :(得分:1)
您必须覆盖方法 shouldOverrideUrlLoading
:
当即将在当前WebView中加载URL时,使主机应用程序有机会进行控制。如果未提供WebViewClient,则默认情况下,WebView将要求活动管理器为URL选择适当的处理程序。如果提供了WebViewClient,则返回true会导致当前WebView放弃加载URL,而返回false会导致WebView照常继续加载URL。
如果您希望WebView
在旧版本和新版本的Android上都可以使用,则应覆盖两次,
WebViewClient webViewClient = new WebViewClient()
{
@SuppressWarnings("deprecation") @Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
@TargetApi(Build.VERSION_CODES.N) @Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request)
{
view.loadUrl(request.getUrl().toString());
return true;
}
@Override
public void onPageFinished(WebView view, String url)
{
super.onPageFinished(view, url);
Toast.makeText(getApplicationContext(), "Page loaded!", Toast.LENGTH_SHORT).show();
}
};