[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    [PyQt] evaluateJavaScript on every page
From:       Peter Irbizon <peterirbizon () gmail ! com>
Date:       2014-03-31 22:27:58
Message-ID: CABFuWSzbxvysgGWn3GdZp8nBYr_citT+nguhywSPsu83CiyK0g () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Hi guys,

I am using evaluateJavaScript to change some JS values in my case
window.navigator. It works pretty well on first visited page
http://something.tld/first.php but when I click on any link on that page
and go to second.php it stops to be in effect.
How can I do it to stay this javascript in effect for every visited
(navigated, clicked) page from my application?

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from PyQt4 import QtCore, QtGui, QtWebKit

getJsValue = """
window.navigator = {
  appCodeName: 'MyApp',
  appName: 'MyNewApp',
  vendor: 'MyCompany'
}
"""

class myWindow(QtWebKit.QWebView):
    def __init__(self, parent=None):
        super(myWindow, self).__init__(parent)

        self.page().mainFrame().evaluateJavaScript(getJsValue)

        self.page().mainFrame().addToJavaScriptWindowObject("myWindow",
self)
        self.loadFinished.connect(self.on_loadFinished)
        self.load(QtCore.QUrl('http://something.tld/first.php'))

    @QtCore.pyqtSlot(str)
    def showMessage(self, message):
        print "Message from website:", message

    @QtCore.pyqtSlot()
    def on_loadFinished(self):
        #self.page().mainFrame().evaluateJavaScript(getJsValue)
        pass

if __name__ == "__main__":
    import sys

    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('myWindow')

    main = myWindow()
    main.show()

    sys.exit(app.exec_())

[Attachment #5 (text/html)]

<div dir="ltr"><div>Hi guys, </div><div><br></div><div>I am using evaluateJavaScript \
to change some JS values in my case window.navigator. It works pretty well on first \
visited page <a href="http://something.tld/first.php">http://something.tld/first.php</a> \
but when I click on any link on that page and go to second.php it stops to be in \
effect.</div> <div>How can I do it to stay this javascript in effect for every \
visited (navigated, clicked) page from my application? \
</div><div><br></div><div>#!/usr/bin/env python</div><div>#-*- coding:utf-8 \
-*-</div><div><br></div><div> from PyQt4 import QtCore, QtGui, QtWebKit  \
</div><div><br></div><div>getJsValue = &quot;&quot;&quot; </div><div>window.navigator \
= {</div><div>  appCodeName: &#39;MyApp&#39;,</div><div>  appName: \
&#39;MyNewApp&#39;,</div> <div>  vendor: \
&#39;MyCompany&#39;</div><div>}</div><div>&quot;&quot;&quot;  \
</div><div><br></div><div>class myWindow(QtWebKit.QWebView):  </div><div>    def \
__init__(self, parent=None):</div><div>        super(myWindow, \
self).__init__(parent)</div> <div>       </div><div>        \
self.page().mainFrame().evaluateJavaScript(getJsValue)</div><div>         </div><div> \
self.page().mainFrame().addToJavaScriptWindowObject(&quot;myWindow&quot;, \
self)</div><div>        self.loadFinished.connect(self.on_loadFinished)</div> <div>   \
self.load(QtCore.QUrl(&#39;<a \
href="http://something.tld/first.php&#39;">http://something.tld/first.php&#39;</a>))</div><div><br></div><div> \
@QtCore.pyqtSlot(str)  </div><div>    def showMessage(self, message):</div> <div>     \
print &quot;Message from website:&quot;, message</div><div><br></div><div>    \
@QtCore.pyqtSlot()</div><div>    def on_loadFinished(self):</div><div>        \
#self.page().mainFrame().evaluateJavaScript(getJsValue)</div> <div>        pass \
</div><div><br></div><div>if __name__ == &quot;__main__&quot;:</div><div>    import \
sys</div><div><br></div><div>    app = QtGui.QApplication(sys.argv)</div><div>    \
app.setApplicationName(&#39;myWindow&#39;)</div> <div><br></div><div>    main = \
myWindow()</div><div>    main.show()</div><div><br></div><div>    \
sys.exit(app.exec_())</div></div>



_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic