示例#1
0
 def __findElement(self):
     """
     Private method to find the element belonging to this ClickToFlash
     instance.
     """
     parent = self.parentWidget()
     view = None
     while parent is not None:
         if isinstance(parent, QWebView):
             view = parent
             break
         parent = parent.parentWidget()
     if view is None:
         return
     
     objectPos = view.mapFromGlobal(self.loadFlashButton.mapToGlobal(
         self.loadFlashButton.pos()))
     objectFrame = view.page().frameAt(objectPos)
     hitResult = QWebHitTestResult()
     hitElement = QWebElement()
     
     if objectFrame is not None:
         hitResult = objectFrame.hitTestContent(objectPos)
         hitElement = hitResult.element()
     
     if not hitElement.isNull() and \
        hitElement.tagName().lower() in ["embed", "object"]:
         self.__element = hitElement
         return
     
     # hit test failed, trying to find element by src
     # attribute in elements of all frames on page (although less accurate
     frames = []
     frames.append(view.page().mainFrame())
     while frames:
         frame = frames.pop(0)
         if not frame:
             continue
         docElement = frame.documentElement()
         elements = QWebElementCollection()
         elements.append(docElement.findAll("embed"))
         elements.append(docElement.findAll("object"))
         
         for element in elements:
             if not self.__checkElement(element) and \
                not self.__checkUrlOnElement(element, view):
                 continue
             self.__element = element
             return
         frames.extend(frame.childFrames())
示例#2
0
    def __findElement(self):
        """
        Private method to find the element belonging to this ClickToFlash
        instance.
        """
        parent = self.parentWidget()
        view = None
        while parent is not None:
            if isinstance(parent, QWebView):
                view = parent
                break
            parent = parent.parentWidget()
        if view is None:
            return

        objectPos = view.mapFromGlobal(
            self.loadFlashButton.mapToGlobal(self.loadFlashButton.pos()))
        objectFrame = view.page().frameAt(objectPos)
        hitResult = QWebHitTestResult()
        hitElement = QWebElement()

        if objectFrame is not None:
            hitResult = objectFrame.hitTestContent(objectPos)
            hitElement = hitResult.element()

        if not hitElement.isNull() and \
           hitElement.tagName().lower() in ["embed", "object"]:
            self.__element = hitElement
            return

        # hit test failed, trying to find element by src
        # attribute in elements of all frames on page (although less accurate
        frames = []
        frames.append(view.page().mainFrame())
        while frames:
            frame = frames.pop(0)
            if not frame:
                continue
            docElement = frame.documentElement()
            elements = QWebElementCollection()
            elements.append(docElement.findAll("embed"))
            elements.append(docElement.findAll("object"))

            for element in elements:
                if not self.__checkElement(element) and \
                   not self.__checkUrlOnElement(element, view):
                    continue
                self.__element = element
                return
            frames.extend(frame.childFrames())