Android Внедрить в веб-браузер внешний JS, выполнить функцию и подать предупреждение - PullRequest
0 голосов
/ 21 января 2011

Я хочу добавить внешний javascript в веб-просмотр и выполнить одну из его функций execute().После завершения выдается предупреждение, и строка возвращается к действию
, вот как я это делаю, но, похоже, это не работает (js уже проверено)

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

это то, как я реализую HTMLOUT, в то время как предупреждение переопределяется в ChromeClient

browser.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT"); browser.setWebViewClient(new mWebViewClient()); browser.setWebChromeClient(new mChromeClient()); browser.loadUrl("file:///android_asset/Travian comx2b.htm");

Ответы [ 3 ]

3 голосов
/ 25 января 2011

Хорошо, после многих попыток я нашел обходной путь, но, к сожалению, не «решение». Я использовал эту загрузку view.loadUrl("javascript:" + src + " execute(); " + "");, в то время как источник src происходит из текстового файла script.js, который включает мой javascript (как функции, так и простые команды)

//get script
InputStream is;
        String src= "";
        try {
            is = getAssets().open("travianbot.js");
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            // Convert the buffer into a string.
            src = new String(buffer);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

образец script.js (будьте осторожны с окончанием строки ";")

function addItem(v, link, x, y, result) {
    //function commands  
}
function popup() {
    alert(execute().split("@"));
}     
function execute(){  
    //function commands
    additem(...);
}
// plain commands
.......

Одним из решений для удаленного сценария, который я не проверял, является синтаксический анализ удаленного сценария (например, в качестве входного потока), а затем его включение в виде простого текста.

1 голос
/ 09 февраля 2011

пожалуйста, проверьте это http://lexandera.com/2009/01/adding-alert-support-to-a-webview/

Спасибо

0 голосов
/ 24 января 2011

Я думаю, вы должны заключить jsFileUrl в одинарные кавычки.

script.src='" + jsFileURL + "';"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...