def evaluate_js(self, script): """ Evaluate given JavaScript code and return the result :param script: The JavaScript code to be evaluated :return: Return value of the evaluated code """ escaped_script = 'JSON.stringify(eval("{0}"))'.format(escape_string(script)) return self.gui.evaluate_js(escaped_script, self.uid)
def evaluate_js(script, uid='master'): """ Evaluate given JavaScript code and return the result :param script: The JavaScript code to be evaluated :param uid: uid of the target instance :return: Return value of the evaluated code """ escaped_script = 'JSON.stringify(eval("{0}"))'.format(escape_string(script)) return gui.evaluate_js(escaped_script, uid)
def evaluate_js(self, script, callback=None): """ Evaluate given JavaScript code and return the result :param script: The JavaScript code to be evaluated :return: Return value of the evaluated code :callback: Optional callback function that will be called for resolved promises """ unique_id = uuid1().hex self._callbacks[unique_id] = callback if self.gui.renderer == 'cef': sync_eval = 'window.external.return_result(JSON.stringify(value), "{0}");'.format( unique_id, ) else: sync_eval = 'JSON.stringify(value);' if callback: escaped_script = """ var value = eval("{0}"); if (pywebview._isPromise(value)) {{ value.then(function evaluate_async(result) {{ pywebview._asyncCallback(JSON.stringify(result), "{1}") }}); true; }} else {{ {2} }} """.format(escape_string(script), unique_id, sync_eval) else: escaped_script = """ var value = eval("{0}"); {1}; """.format(escape_string(script), sync_eval) if self.gui.renderer == 'cef': return self.gui.evaluate_js(escaped_script, self.uid, unique_id) else: return self.gui.evaluate_js(escaped_script, self.uid)