哪里是新窗口的URI,在创建的Web视图?(Where is the uri of the new

2019-10-17 04:49发布

根据该文件 ,在创建新窗口信号时调用WebKit是创建一个新的窗口。 我一直在试图重写此方法以处理<a target='_blank'在PyGTK的WebKit浏览器链接。 在WebView中的一个子类,我有:

...

self.connect("create-web-view", self.newWin)

...

def newWin(view, frame, data):
    print view.get_property('uri')
    print frame.get_property('uri')
    print data.get_property('uri')

点击新窗口的链接时,这就是所谓的,但由于某些原因所有这些对象都显示相同的URL,终端打印出当前页面 URL三次。 我如何才能找到一个应该被传递到新窗口中的网址?

由于ptomato,我找到了解决办法。 设置信号,此功能的工作原理:

...
self.connect("new-window-policy-decision-requested", self.newWin) #requires webkit 1.1.4

...

def newWin(self, view, frame, request, nav_action, policy_decision):
    """
    Calls the default browser on external link requests.
    """
    functiontoviewurl(request.get_uri())
    # According to the documentation: http://webkitgtk.org/reference/webkitgtk/stable/webkitgtk-webkitwebview.html#WebKitWebView-new-window-policy-decision-requested
    # call ignore on the policy decision, then return true (that is, we handled it).
    policy_decision.ignore()
    return True

Answer 1:

您不能捕获该信号截获一个新窗口的创建 - 到那个时候,浏览器就已经决定了它会创建一个新的窗口。 相反,连接到new-window-policy-decision-requested ,并从一开始的URI request参数。



文章来源: Where is the uri of the new window, in create-web-view?