Вызов функции JavaScript из действия? - PullRequest
2 голосов
/ 01 апреля 2011

Как я могу вызвать функцию в HTML-документе, который загружается в веб-представление с помощью кнопки, которая находится в моей деятельности? То есть: кнопка ImageButton (называемая: bookBtn) находится в строке заголовка действия. Когда она нажата / нажата, мне нужно, чтобы она запускала функцию в DOM webView - она ​​в основном загружает новый документ HTML в DOM, реализуя эффект слайда.

Я нашел много документации о том, как сделать это от webView до действия, но не наоборот. Google говорит, что можно сделать , но примеров на самом деле нет. Я попытался настроить пример кода, который они показывают здесь , но я не могу заставить его работать. Спасибо за любой вклад.

Ниже приведена функция с документом HTML, загружаемая в веб-представление, mWebView:

    <script type="text/javascript">
    $(document).ready(function() {
        function loadTOC(){$.mobile.changePage("docs/1-1.html", "slideup");
        };
    });
</script>

... и в моей основной деятельности я пробовал это в соответствии с Google docs, но не работает:

    ImageButton imageButton = (ImageButton) findViewById(R.id.bookBtn);
    imageButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
        mHandler.post(new Runnable() {
            public void run() {
                mWebView.loadUrl("javascript:loadTOC");
            }
        });
        }
    });

Ответы [ 2 ]

8 голосов
/ 01 апреля 2011

В коде есть как минимум две проблемы:

1) URL-адрес JavaScript не вызывает функцию loadTOC, он просто ссылается на нее. То, что вы хотите:

mWebView.loadUrl("javascript:loadTOC()");

2) Функция loadTOC не является глобально видимой AFAIK, поэтому URL-адрес JavaScript не сможет получить к ней доступ.

Вы также должны убедиться, что JavaScript включен, как подсказывает отсутствие хорошего кодирования.

2 голосов
/ 01 апреля 2011

Я не вижу здесь, поэтому я добавлю, что вы должны убедиться, что у вас есть

mWebView.setWebChromeClient(new WebChromeClient());
mWebView.getSettings().setJavaScriptEnabled(true);.

в вашем коде Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...