Forum Archive

Can't get the WebView delegate methods to work (SOLVED)

Sebastian

I'm trying to do something when a webpage has finished loading, but it doesn't seem to work.

import ui, sound

class MyWebViewDelegate (object):
    def webview_did_finish_load(webview):
        sound.play_effect('Ding_3')


w = ui.WebView()
w.frame = (0, 0, ui.get_screen_size()[0], ui.get_screen_size()[1])
w.delegate = MyWebViewDelegate()
w.load_url('http://www.google.com')

w.present()

Any ideas?

omz

Sorry about this, the documentation is wrong. The first parameter of every method should be self. So your delegate class should look like this:

class MyWebViewDelegate (object):
    def webview_did_finish_load(self, webview):
        sound.play_effect('Ding_3')
Sebastian

Thanks for clearing that up @omz! :)

I should have understood that though :P

ihf

Just curious..I was playing with this snippet and I find that some webpages call webview_did_finish_load more than once. How does this method determine that the load is finished and why do some webpages (e.g., https://twitter.com) trigger it more than once?

omz

@ihf This is related to embedded iframes. Unfortunately, I forgot to implement a loading attribute that would allow you to check whether the view is still loading, so there's currently no way to work around this...

mikael

Noted that it is a year later, and the documentation is still wrong.