如何停止在我的网页浏览中播放的YouTube视频?当我点击后退按钮时,视频不会停止,而是在后台继续播放.
码:
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setPluginsEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(false);
webView.getSettings().setSupportZoom(false);
webView.loadData(myUrl,"text/html", "utf-8");
Run Code Online (Sandbox Code Playgroud) 我已经看过很多次这个问题,但仍然无法让我的代码工作.
我希望我的webview加载一些URL(比如www.google.com),然后应用一些存储的javascript assets/jstest.js,其中包含以下内容:
function test(){
document.bgColor="#00FF00"; //turns to green the background color
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试加载JS的地方:
@Override
public void onPageFinished(WebView view, String url){
view.loadUrl("javascript:(function() { "
+ " document.bgColor='#FF0000';" //turns to red the background color
+ " var script=document.createElement('script'); "
+ " script.setAttribute('type','text/javascript'); "
+ " script.setAttribute('src', 'file:///android_asset/jstest.js'); "
+ " script.onload = function(){ "
+ " test(); "
+ " }; "
+ " document.getElementsByTagName('head')[0].appendChild(script); "
+ "})()");
}
Run Code Online (Sandbox Code Playgroud)
我知道这里的javascript有效,因为背景颜色实际上变为红色,但由于某种原因它不会加载jstest.js.我认为问题可能在文件路径中(我确定javascript代码的每一行都是正确的),但它看起来对我来说是正确的.该文件位于正确的文件夹中.
我错过了什么?
编辑:
由于WebResourceResponse课程仅适用于API …
问题很简单.在应用程序中,我们希望跟踪显示的当前URL.为此,我们使用shouldOverrideUrlLoading回调来WebViewClient保存url到每个更新的类字段.这是相关代码:
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
mCurrentUrl = url;
// If we don't return false then any redirect (like redirecting to the mobile
// version of the page) or any link click will open the web browser (like an
// implicit intent).
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
...
}
});
mWebView.loadUrl(mInitialUrl);
Run Code Online (Sandbox Code Playgroud)
但是,至少有一种情况,即回调永远不会被触发,并且mCurrentUrl字段不会更新.
网址:https://m.pandora.net/es-es/products/bracelets/556000
上次更新的URL(在单击产品时永远不会调用shouldOverrideUrlLoading):https://m.pandora.net/es-es/products/bracelets
我尝试过像onPageStarted()这样的回调,但是url也被过滤了,因为它的受保护代码似乎没有可访问的上游. …
我正试图从Android中的Webview填充Webforms.我已经在这里找到了这段代码:自动填写webview中的字段
String username = "cristian";
webview.loadUrl("javascript:document.getElementById('username').value = '"+username+"';");
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不明白我要打开我要填写的页面.
setContentView(R.layout.web);
final WebView mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl(url);
String user="u";
String pwd="p";
mWebView.loadUrl("javascript:document.getElementById('username').value = '"+user+"';document.getElementById('password').value='"+pwd+"';");
Run Code Online (Sandbox Code Playgroud)
当我以这种方式尝试时,网站会显示但表单中没有任何值.
在此先感谢您的帮助
我在WebView中添加了一个JavaScript函数(Kotlin):
val webView = findViewById(R.id.webview) as WebView
webView.getSettings().setJavaScriptEnabled(true)
webView.addJavascriptInterface(this, "android")
webView.getSettings().setBuiltInZoomControls(false)
webView.loadUrl(url)
webView.webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView, url: String) {
super.onPageFinished(view, url)
webView.loadUrl("javascript:(function captchaResponse (token){" +
" android.reCaptchaCallbackInAndroid(token);" +
" })()")
}
}
Run Code Online (Sandbox Code Playgroud)
该函数工作正常,但问题是它在WebView中添加它时会立即运行.我只想将它作为JavaScript函数包含在内,只有当用户填写reCAPTCHA时才能从HTML调用它.我怎样才能做到这一点?
任何人都可以提供有关如何在公开可用的 Android Q 上保存文件的准确教程,因为getExternalFilesDir()无法在 Android Q+ 中使用。
我已经处理这个问题好几天了,找不到任何解决方案。
我正在尝试下载一些 css、js 和 HTML 文件,以便将它们加载到 Webview 上。
现在,我有以下代码,用 Kotlin 编写:
companion object {
private const val TAG = "MainActivity"
private var rootDir: Path? = null
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
...
rootDir = getExternalFilesDir(null)
Log.v(TAG, "RootDir: ${rootDir!!.path}")
val cacheDir = File(rootDir!!, "cache")
if(!cacheDir.exists()) {
Log.v(TAG, "Creating cache dir (${cacheDir.path})")
try {
if (cacheDir.mkdirs())
Log.v(TAG, "Created cache dir correctly")
else
Log.v(TAG, "Could not create cache dir")
}catch (ex: …Run Code Online (Sandbox Code Playgroud) 是否可以从WebView访问本地存储数据?以下是我需要从应用的WebView中读取的Chrome值的屏幕截图.我需要从我的应用程序中的"值"列中获取数据.
我想要做的是,例如,在我的WebView中访问google.com,然后从"nullctx"键中读取值"1".
任何有关如何阅读这些值的帮助将不胜感激.
有没有办法在加载匹配的 URL 时将(非恶意)JavaScript(或 CSS)语句注入到 Android 上的 Chrome 中?
基本上,我想修改一些网站的外观。
一个例子是m.facebook.com:
我想注入如下内容:
#header: {position:fixed; margin-top:-2px}
#root:{margin-top:40px}
Run Code Online (Sandbox Code Playgroud)
不幸的是,Google 没有为移动平台扩展插件 API!
有什么想法吗?
我正在尝试将javascript注入我在webview中加载的页面.例如,我通过在自定义WebViewClient类中覆盖'onPageFinished'将值放入给定的文本框中:
public class MyAppWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url)
{
super.onPageFinished(view, url);
view.loadUrl("javascript:" +
"document.getElementById('elid').value = 'texthere';");
}
}
Run Code Online (Sandbox Code Playgroud)
这在浏览网站和单击链接时正常工作,但是当我按下后退按钮时,java/javascript似乎没有正确执行(文本框没有正确填写.
按下后退按钮时会调用onPageFinished函数,但它似乎是在当前页面上执行javascript,而不是在返回的页面上执行.
android ×9
webview ×5
javascript ×4
css ×1
file ×1
permissions ×1
plugins ×1
recaptcha ×1
video ×1
youtube ×1