Пример #1
0
 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)
Пример #2
0
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)
Пример #3
0
    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)