javascript - Android-外部WebページにJavaScriptをロードして実行する

javascript android load webpage

WebViewにロードしたWebページhttp://www.google.comの下部に<div>hello</div>を追加したいとします。出来ますか?

内部のWebページ(デバイスの内部メモリにあるページ)に対して実行できます。

これが私の活動のコードです:

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class Main extends Activity {

    private WebView mWebview;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        mWebview  = new WebView(this);
        mWebview.getSettings().setJavaScriptEnabled(true);

        final Activity activity = this;

        mWebview.setWebViewClient(new WebViewClient() {

            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
            }

            private final String jsFileURL = "file:///android_asset/script.js";

            @Override  
            public void onPageFinished(WebView view, String url){

                final WebView v = view;

                view.loadUrl("javascript:{" +
                        "var script = document.createElement('script');" +
                        "script.type = 'text/javascript';" +
                        "script.src = '" + jsFileURL + "';" +
                        "document.getElementsByTagName('head').item(0).appendChild(script); };");

                new Handler().postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        v.loadUrl("javascript:job();");
                    }

                }, 100);

              }  

        });

        mWebview.loadUrl("file:///android_asset/page.html");
        //mWebview.loadUrl("http://www.google.com");

        setContentView(mWebview );

    }

}


"/ assets"フォルダーにあるscript.jsの内容:

function job() {
    var div = document.createElement('div');
    div.innerHTML = 'hello';
    document.getElementsByTagName('body').item(0).appendChild(div);
}


また、「/ assets」フォルダにあるpage.htmlのコンテンツも:

<html>
<head></head>
<body>
<div>content of my page</div>
</body>
</html>


だが

変えたら

mWebview.loadUrl("file:///android_asset/page.html");
//mWebview.loadUrl("http://www.google.com");


沿って

//mWebview.loadUrl("file:///android_asset/page.html");
mWebview.loadUrl("http://www.google.com");


トリックはもう機能しません...セキュリティ上の理由はありますか?
答え
res:raw / rawに「raw」フォルダを作成します。次に、フォルダrawでyourFile.htmlをホストします。次にあなたのコードで:

String link = this.getApplicationContext()。getFilesDir()+ "raw / yourFile.html";
mWebview.loadUrl(link);
関連記事

javascript - プログラムでルートノードオブジェクトに関数を追加する

javascript - 画像はクリックで5ピクセルジャンプします

javascript - IE 9で$(dropdown).append(new Option(“ Joe Blow”、1、true、true)を使用した空白のオプションテキスト

javascript - マウスアウトでJavaScriptの無限ループを停止しますか?

javascript - jQueryデータ値の読み取り

c# - C#クラスとしてのjavascript Highchartsオブジェクト

javascript - Sencha Touchでのシンプルなフォーム検証

javascript - jQueryは複数のホバーのコードを最適化します

javascript - BloggerのレイアウトタグはHTMLではサポートされていません:JavaScriptヘルプが必要です

javascript - ベンダープレフィックスの「requestAnimationFrame」実装の違いは何ですか?