我想替换html元素中的内容,所以我使用以下函数:
function ReplaceContentInContainer(id,content) {
var container = document.getElementById(id);
container.innerHTML = content;
}
ReplaceContentInContainer('box','This is the replacement text');
<div id='box'></div>
Run Code Online (Sandbox Code Playgroud)
以上工作很好,但问题是我在页面上有多个html元素,我想替换它的内容.所以我不能使用id而是使用类.我被告知javascript不支持任何类型的内置get元素的类函数.那么如何修改上面的代码以使其适用于类而不是ID?
PS我不想为此使用jQuery.
假设我通过webview加载第三方URL.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.webview);
webview.setWebViewClient(new HelloWebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebChromeClient(new MyWebChromeClient());
webview.loadUrl("http://ebay.com");
}
Run Code Online (Sandbox Code Playgroud)
我可以在这个WebView中注入一些东西来替换我自己的ebay徽标吗?
当用户点击我的应用程序的WebView上的标签时,我正试图从assets文件夹中播放声音.我发现我可以使用扩展WebViewClient的新类来检测链接的扩展名,如果是mp3文件,它可以通过默认的音频播放器播放.但是我想让它在没有开始新活动的情况下在活动中发挥作用.
我使用以下链接作为参考: Webview中的声音 和使用Uri创建MediaPlayer或使用资产中的文件时出错
但它没有用.
我尝试使用以下代码执行此操作:
package com.rangga.test.webview.sound;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.net.Uri;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MyWebViewClient extends WebViewClient{
public MediaPlayer mp;
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
if(url.endsWith(".mp3")){
mp = new MediaPlayer();
AssetFileDescriptor afd = getAssets().openFd(url);
mp.setDataSource(afd.getFileDescriptor());
mp.start();
return true;
}else{
return true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在getAssets()上得到一个未定义的方法错误,我尝试了谷歌它,它说了一些关于传递一个Context的事情.我是Android和面向对象编程的新手,所以我想知道这是否是正确的方法,以及是否有关于Context是什么的简单解释.谢谢.
以下是我的完整代码:
MainActivity.class
package com.rangga.test.webview.sound;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
public class MainActivity extends Activity {
WebView webMain;
/** Called when the activity is …Run Code Online (Sandbox Code Playgroud) 我无法在Android网页视图上播放视频.
我已将html和视频文件保存在我的assets文件夹中.
每当我加载html文件时,它都会给我错误
05-01 12:31:16.092: E/MediaResourceGetter(17241): Unable to read file: file:///android_asset/MediaBook2%20(2)/2B952499A0E681.mp4
Run Code Online (Sandbox Code Playgroud)
每当我按下播放按钮时,我都会收到以下错误
05-01 12:31:23.680: E/chromium(17241): [ERROR:webmediaplayer_android.cc(328)] Not implemented reached in virtual void content::WebMediaPlayerAndroid::setRate(double)
05-01 12:31:23.710: E/MediaPlayer(17241): error (1, -2147483648)
05-01 12:31:23.710: E/MediaPlayer(17241): Error (1,-2147483648)
Run Code Online (Sandbox Code Playgroud)
能够加载任何远程视频并运行,但问题是我从资源文件夹Code加载本地视频以加载文件并设置Web视图
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Remove title bar
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_webview);
mContentView = (LinearLayout) findViewById(R.id.linearlayout);
// Keep the webview setup ready
setupWebView();
}
public void setupWebView()
{
webView = (WebView) findViewById(R.id.webView);
// progressBar = (ProgressBar) findViewById(R.id.progressBarForWebView);
WebSettings webViewSettings = webView.getSettings();
webViewSettings.setJavaScriptEnabled(true);
webViewSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webViewSettings.setPluginState(PluginState.ON); …Run Code Online (Sandbox Code Playgroud) 我正在尝试从资源中加载到WebView的JavaScript代码中播放声音:
WebView web_view = (WebView) findViewById(R.id.web_view);
web_view.getSettings().setJavaScriptEnabled(true);
web_view.setWebChromeClient(new WebChromeClient());
web_view.loadUrl("file:///assets/www/index.html");
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法的所有组合,如何使用OGG,MP3和WAV文件播放音频,JavaSrcipt代码位于assets/www/js/play.js:
audio = new Audio("../audio/sound.mp3");
audio.load();
audio.play();
audio = new Audio("./audio/sound.mp3");
audio.load();
audio.play();
audio = new Audio("audio/sound.mp3");
audio.load();
audio.play();
audio = new Audio("file:///android_asset/www/audio/sound.mp3");
audio.load();
audio.play();
audio = new Audio();
audio.src = document.getElementById("audio_tag").src;
audio.load();
audio.play();
Run Code Online (Sandbox Code Playgroud)
audio_tag的位置<audio id="audio_tag" src="audio/sound.mp3" preload="auto"></audio>,也尝试使用路径和格式的所有组合.
但是声音没有播放,只知道可能出现的错误是遵循一般错误:
E/MediaPlayer(1530):错误(1,-2147483648)
从这条信息消息中猜测,音频文件的路径应该适用于第二个第五个案例:
I/StagefrightPlayer(33): setDataSource('file:///android_asset/www/audio/sound.mp3');
Run Code Online (Sandbox Code Playgroud)
虽然这个问题可能被认为是Android WebView使用javascript播放音频的重复, 但答案无论如何都没有帮助,因为永远不会调用shouldOverrideUrlLoading,我试图在这里更准确地指出这个问题.
你有什么可能是错的线索或如何找出它是什么?
谢谢.
编辑:使用Android 2.3在Galaxy Gio中测试给出了不同的错误集:
02-06 17:15:13.829:V/PlayerDriver(95):AddToScheduler 02-06 17:15:13.829:V/PlayerDriver(95):PendForExec 02-06 17:15:13.829:V/PlayerDriver(95): OsclActiveScheduler :: Current 02-06 17:15:13.829:V/PlayerDriver(95):StartScheduler 02-06 17:15:13.829:V/PVPlayer(95):send PLAYER_SETUP 02-06 …