diff --git a/src/calibre/customize/__init__.py b/src/calibre/customize/__init__.py index 6423a9824c..2570efebe1 100644 --- a/src/calibre/customize/__init__.py +++ b/src/calibre/customize/__init__.py @@ -685,5 +685,13 @@ class ViewerPlugin(Plugin): # {{{ evaljs(js) ''' pass + + def run_javascript(self, evaljs): + ''' + This method is called every time a document has finished laoding. Use + it in the same way as load_javascript(). + ''' + pass + # }}} diff --git a/src/calibre/gui2/viewer/documentview.py b/src/calibre/gui2/viewer/documentview.py index 4863997201..8369dc0020 100644 --- a/src/calibre/gui2/viewer/documentview.py +++ b/src/calibre/gui2/viewer/documentview.py @@ -91,7 +91,8 @@ class Document(QWebPage): # {{{ # Fonts load_builtin_fonts() - for pl in all_viewer_plugins(): + self.all_viewer_plugins = tuple(all_viewer_plugins()) + for pl in self.all_viewer_plugins: pl.load_fonts() self.set_font_settings() @@ -175,7 +176,7 @@ class Document(QWebPage): # {{{ evaljs = self.mainFrame().evaluateJavaScript self.loaded_lang = self.js_loader(evaljs, self.current_language, self.hyphenate_default_lang) - for pl in all_viewer_plugins(): + for pl in self.all_viewer_plugins: pl.load_javascript(evaljs) @pyqtSignature("") @@ -213,6 +214,9 @@ class Document(QWebPage): # {{{ if self.in_paged_mode: self.switch_to_paged_mode() self.read_anchor_positions(use_cache=False) + evaljs = self.mainFrame().evaluateJavaScript + for pl in self.all_viewer_plugins: + pl.run_javascript(evaljs) self.first_load = False def colors(self):