相关疑难解决方法(0)

如何在JavaScript中按类获取元素?

我想替换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.

javascript

225
推荐指数
5
解决办法
51万
查看次数

在Android Webview中,我能修改网页的DOM吗?

假设我通过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徽标吗?

javascript android templates webview

37
推荐指数
2
解决办法
3万
查看次数

Android:使用WebView播放资产声音

当用户点击我的应用程序的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)

audio android webview android-assets

8
推荐指数
1
解决办法
1万
查看次数

无法在Web View中播放视频

我无法在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)

android android-layout android-webview

5
推荐指数
1
解决办法
4083
查看次数

从JavaScript中播放WebView中的声音

我正在尝试从资源中加载到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 …

javascript audio android webview

2
推荐指数
1
解决办法
1万
查看次数