2016-04-22 9 views
2

Ich schreibe eine kleine Desktop-App in PYQT Python, die einen QWeb View Browser hat. Ich füge eine Funktionalität zu diesem Browser hinzu, die, wenn Benutzer irgendeinen Text mit der Maus auswählt und rechts klickt und Show xpath drückt, ein Javascript ausgeführt wird, um den xpath zu finden. mein Code hier:jquery funktioniert nicht in PyQt

@pyqtSlot() 
def slotshowxpath(self): 

text = self.selectedText() 
if not text: 
    QMessageBox.information(self,"information","No Text Selected") 
else: 
    frame = self.page().mainFrame().documentElement() 
    #print frame.toHtml() 
    #abc = frame.document() 
    #abc.evaluateJavaScript("alert('"+self.page().selectedHtml()+"');") 
    frame.evaluateJavaScript("""var data = window.getSelection().anchorNode.parentNode; getXPath(data); 

    function getXPath(element){ 
    alert(element); 
    var xpath = ''; 
    for (; (element && element.nodeType) == 1; element = element.parentNode) 
    { 
    var id = $(element.parentNode).children(element.tagName).index(element) + 1; 
    id > 1 ? (id = '[' + id + ']') : (id = ''); 
    xpath = '/' + element.tagName.toLowerCase() + id + xpath; 
    } 
    alert(xpath); 
    return xpath;  
    }""" 
     ) 

diese Abfrage bis $(element.parentNode).children gut funktioniert, aber nicht für $(element.parentNode).children(element.tagName).index(element) + 1 arbeiten, kann bei der Festsetzung dieses Problems jemand mir helfen?

+0

jquery ist ein Drittanbieter-JavaScript-Bibliothek, so das wird nicht funktionieren, ohne es herunterzuladen und auszuführen –

Antwort

0

tatsächlich war das Problem mit der Warnung Anweisung innerhalb der query.its nicht innerhalb ausgeführt zu werden, aber wenn ich es außerhalb der Javascript versucht, nachdem der Wert zurückgegeben wird, starten Sie es arbeiten