mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 08:46:37 -04:00
catch js results that are received after collection closed
This commit is contained in:
parent
a8cadfdc3b
commit
2868ec0e8b
1 changed files with 14 additions and 4 deletions
|
@ -288,7 +288,12 @@ body {{ zoom: {}; {} }}
|
|||
|
||||
def _evalWithCallback(self, js, cb):
|
||||
if cb:
|
||||
self.page().runJavaScript(js, cb)
|
||||
def handler(val):
|
||||
if self._shouldIgnoreWebEvent():
|
||||
print("ignored late js callback", cb)
|
||||
return
|
||||
cb(val)
|
||||
self.page().runJavaScript(js, handler)
|
||||
else:
|
||||
self.page().runJavaScript(js)
|
||||
|
||||
|
@ -310,10 +315,15 @@ body {{ zoom: {}; {} }}
|
|||
def _openLinksExternally(self, url):
|
||||
openLink(url)
|
||||
|
||||
def _shouldIgnoreWebEvent(self):
|
||||
# async web events may be received after the profile has been closed
|
||||
# or the underlying webview has been deleted
|
||||
from aqt import mw
|
||||
return not mw.col or sip.isdeleted(self)
|
||||
|
||||
def _onBridgeCmd(self, cmd):
|
||||
# ignore webchannel messages that arrive after underlying webview
|
||||
# deleted
|
||||
if sip.isdeleted(self):
|
||||
if self._shouldIgnoreWebEvent():
|
||||
print("ignored late bridge cmd", cmd)
|
||||
return
|
||||
|
||||
if cmd == "domDone":
|
||||
|
|
Loading…
Reference in a new issue