Execute JavaScript.
(self, script_src)
| 789 | QWebEnginePage.__init__(self, profile) |
| 790 | |
| 791 | def execute_javascript(self, script_src): |
| 792 | ''' Execute JavaScript.''' |
| 793 | try: |
| 794 | if hasattr(self, "loop") and self.loop.isRunning(): |
| 795 | # NOTE: |
| 796 | # |
| 797 | # Just return None is QEventLoop is busy, such as press 'j' key not release on webpage. |
| 798 | # Otherwise will got error 'RecursionError: maximum recursion depth exceeded while calling a Python object'. |
| 799 | # |
| 800 | # And don't warry, API 'execute_javascript' is works well for programming purpse since we just call this interface occasionally. |
| 801 | return None |
| 802 | else: |
| 803 | # Build event loop. |
| 804 | self.loop = QEventLoop() |
| 805 | |
| 806 | # Run JavaScript code. |
| 807 | self.runJavaScript(script_src, self.callback_js) |
| 808 | |
| 809 | # Execute event loop, and wait event loop quit. |
| 810 | self.loop.exec() |
| 811 | |
| 812 | # Return JavaScript function result. |
| 813 | return self.result |
| 814 | except: |
| 815 | import traceback |
| 816 | traceback.print_exc() |
| 817 | |
| 818 | return None |
| 819 | |
| 820 | def callback_js(self, result): |
| 821 | ''' Callback of JavaScript, call loop.quit to jump code after loop.exec.''' |