2011-04-01 2 views
2

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

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

Ниже функция ш/в HTML документ, который загружается в WebView, mWebView:

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

... и ж/в моей основной деятельности я попытался это как в Документах Google, но Безразлично «т работы:

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"); 
      } 
     }); 
     } 
    }); 

ответ

-1

Thnx за помощь «Улицы Бостона» на Google Groups, я указал на правую сторону - See Here

Я отсутствующего конец/закрыть скобки на вызов & я переместил функцию из моей головы к телу, и теперь функция срабатывает. :)

+3

Я считаю, что оба этих исправления - это то, что @ typo.pl предложил –

2

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

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

в вашем Android код

+0

Thnx для ввода, но у меня уже были эти настройки. – CelticParser

8

Есть по крайней мере две проблемы в коде:

1) Javascript URL не вызывает функцию loadTOC, он просто ссылается на это. Чего вы хотите:

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

2) loadTOC функция не является глобально видимым AFAIK, поэтому Javascript URL не сможет получить к нему доступ.

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

+0

Thnk - Мне не хватало круглых скобок, но это не было исправление. – CelticParser

Смежные вопросы