1

私は個人用のシンプルな RSS リーダー アプリに取り組んでいます。これは完全なハックですが、個人的に使用しているだけです。私が解決しようとしている問題は、私が読んで RSS フィードを取り込んでいるサイトにモバイル インターフェイスがなく、各ページが非常に重い広告でいっぱいになっていることです。シンプルなアプリでこれのいくつかを修正できると思います。

アプリで記事をクリックすると、そのページの Web ビューが開きます。広告はすべてページロード時に JS によってロードされるため、onPageFinished が呼び出されるまで Web ビューで JS が使用されないようにします。これにより、ページのロード時間が大幅に短縮されます。したがって、これらの記事のページ構造は決して変更されず、私が望むものを正確に継続するノードがあるので、この時点で JQuery をロードして DOM を分解し、より単純な構造を作成してから、独自の css を適用してそれを作成したいと思いますよりモバイルフレンドリー。

テストとして、JS を正常にロードし、次のように webview でページを変更できます。

view.loadUrl("javascript:(function() { " +  
                "document.body.style.background = 'red'; " +  
                "})()")

それはうまく機能し、ページの背景が赤くなります。だから今、src値をローカルファイルに向けるスクリプト/スタイルタグを挿入しようとしています。ここで相対ファイルパスを作成する方法がよくわからないので、それが問題かもしれません。私はこのようなものを試しました:

view.loadUrl("javascript:(function() { " +  
                "var head= document.getElementsByTagName('head')[0]"+
                "var script= document.createElement('script');" +
                "script.type= 'text/javascript';" +
                "script.src= '/android_asset/js/articleSetup.js';"+
                "head.appendChild(script); "+
                "})()");

次のように、webview で同じファイルを開くことができます。

view.loadUrl("file:///android_asset/js/articleSetup.js");

しかし、必要なのは、新しいファイルをロードするのではなく、DOM を操作できるようにそのまま webview に挿入することです。

任意の提案をいただければ幸いです。前もって感謝します。

4

1 に答える 1

0

最良の答えは、次のようなスクリプト タグを作成することだと思います。

var script = document.createElement('script');
script.setAttribute('src', 'file:///android_asset/js/articleSetup.js');
script.setAttribute('type', 'text/javascript');
document.body.appendChild(script);

おそらくあなたは次のようなことができます

view.loadUrl("var script = document.createElement('script');script.setAttribute('src', 'file:///android_asset/js/articleSetup.js'); script.setAttribute('type', 'text/javascript'); document.body.appendChild(script);");

JS ファイルをローカル ファイル システムから Web ページにロードする方法についてはよくわかりませんが、JS ファイルをどこかにホストすることはできますか?

于 2013-06-10T01:28:02.267 に答える