Как читать / отлаживать консоль javascript при использовании wx.html2.WebView - PullRequest
0 голосов
/ 24 сентября 2019

Я использую wx.html2.WebView , чтобы посетить URL, который возвращает простой html / javascript.Проблема, с которой я сталкиваюсь, заключается в том, что когда я захожу на URL с помощью Firefox и Internet Explorer, код работает нормально, но при использовании веб-просмотра я получаю неопределенную объектную ошибку.Есть ли способ отладки ошибок JavaScript с помощью webview?

Вот мой пример

import wx, traceback
from wx.html2 import WebView, EVT_WEBVIEW_ERROR, EVT_WEBVIEW_LOADED, EVT_WEBVIEW_NAVIGATING, EVT_WEBVIEW_NEWWINDOW, \
    WEBVIEWIE_EMU_IE11


html = """<HTML lang=en><HEAD><TITLE>Payments</TITLE></HEAD>
<BODY>
<H1>Loading.....</H1>
loading stripe
<SCRIPT src="https://js.stripe.com/v3/"></SCRIPT>
done loading stripe
<SCRIPT type=text/javascript>
try {
    document.writeln('creating Stripe object');
    // error occurs here, Stripe is undefined
    var stripe = Stripe('<PUBLIC KEY GOES HERE>');
    document.writeln('redirecting to checkout');
    stripe.redirectToCheckout({
        sessionId: '<SESSION ID GOES HERE>'
    }).then(function (result) {
    });
    document.writeln('done calling javascript');
}
catch(error) {
    document.writeln('error occurred: ' + error.message);
}
</SCRIPT>
<H1>....DONE</H1></BODY></HTML>  """


class Main(wx.Frame):
    def __init__(self):
        super().__init__(parent=None, size=(1000, 800))
        self._times_loaded = 0
        self.webview = WebView.New(self)  # type: WebView
        self.webview.Bind(EVT_WEBVIEW_ERROR, self.on_error)
        self.webview.Bind(EVT_WEBVIEW_LOADED, self.on_loaded)
        self.webview.Bind(EVT_WEBVIEW_NAVIGATING, self.on_navigate)
        self.webview.Bind(EVT_WEBVIEW_NEWWINDOW, self.on_new_window)
        # wx.CallAfter(self.load_gateway)
        wx.CallAfter(self.load_html)

        self.Show()

    # def load_gateway(self, evt=None):
    #     self.webview.LoadURL(url)

    def load_html(self):
        self.webview.SetPage(html, "www.stripe.com")

    def reset_page(self):
        self.webview.SetPage(self.webview.GetPageSource(), url)

    # def redirect_to_checkout(self):
    #     # stripe.
    #     session= stripe.checkout.session.Session.create(test_stripe_public_key)

    def on_error(self, evt):
        print(f"error occurred: {evt}")

    def on_navigate(self, evt):
        print("on navigate")

    def on_loaded(self, evt):
        print("loaded")
        self._times_loaded += 1

    def on_new_window(self, evt):
        print("new window event")


try:
    app = wx.App()
    frame = Main()
    app.MainLoop()
except:
    input(traceback.format_exc())
...