mirror of
https://invent.kde.org/network/falkon.git
synced 2024-11-11 01:22:10 +01:00
parent
0eef26f843
commit
171267cfb0
|
@ -194,44 +194,41 @@ void GM_Manager::showNotification(const QString &message, const QString &title)
|
||||||
mApp->desktopNotifications()->showNotification(icon, title.isEmpty() ? tr("GreaseMonkey") : title, message);
|
mApp->desktopNotifications()->showNotification(icon, title.isEmpty() ? tr("GreaseMonkey") : title, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GM_Manager::pageLoadStart()
|
void GM_Manager::frameLoadStart()
|
||||||
{
|
{
|
||||||
QWebFrame* mainFrame = qobject_cast<QWebFrame*>(sender());
|
QWebFrame* frame = qobject_cast<QWebFrame*>(sender());
|
||||||
if (!mainFrame) {
|
if (!frame) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString urlScheme = mainFrame->url().scheme();
|
const QUrl url = frame->url().isEmpty() ? frame->baseUrl() : frame->url();
|
||||||
const QString urlString = mainFrame->url().toEncoded();
|
const QString urlScheme = url.scheme();
|
||||||
|
const QString urlString = url.toEncoded();
|
||||||
|
|
||||||
if (!canRunOnScheme(urlScheme)) {
|
if (!canRunOnScheme(urlScheme)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Run it in every frame
|
frame->addToJavaScriptWindowObject(QSL("_qz_greasemonkey"), m_jsObject);
|
||||||
QList<QWebFrame*> frames;
|
|
||||||
frames.append(mainFrame);
|
|
||||||
while (!frames.isEmpty()) {
|
|
||||||
QWebFrame* frame = frames.takeFirst();
|
|
||||||
if (frame) {
|
|
||||||
mainFrame->addToJavaScriptWindowObject("_qz_greasemonkey", m_jsObject);
|
|
||||||
|
|
||||||
foreach (GM_Script* script, m_startScripts) {
|
foreach (GM_Script* script, m_startScripts) {
|
||||||
if (script->match(urlString)) {
|
if (script->match(urlString)) {
|
||||||
mainFrame->evaluateJavaScript(m_bootstrap + script->script());
|
frame->evaluateJavaScript(m_bootstrap + script->script());
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (GM_Script* script, m_endScripts) {
|
|
||||||
if (script->match(urlString)) {
|
|
||||||
const QString jscript = QString("window.addEventListener(\"DOMContentLoaded\","
|
|
||||||
"function(e) { \n%1\n }, false);").arg(m_bootstrap + script->script());
|
|
||||||
mainFrame->evaluateJavaScript(jscript);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
frames += frame->childFrames();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (GM_Script* script, m_endScripts) {
|
||||||
|
if (script->match(urlString)) {
|
||||||
|
const QString jscript = QString(QSL("window.addEventListener(\"DOMContentLoaded\","
|
||||||
|
"function(e) { \n%1\n }, false);")).arg(m_bootstrap + script->script());
|
||||||
|
frame->evaluateJavaScript(jscript);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GM_Manager::frameCreated(QWebFrame *frame)
|
||||||
|
{
|
||||||
|
connect(frame, SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(frameLoadStart()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void GM_Manager::load()
|
void GM_Manager::load()
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
|
|
||||||
class QUrl;
|
class QUrl;
|
||||||
|
class QWebFrame;
|
||||||
class QNetworkRequest;
|
class QNetworkRequest;
|
||||||
|
|
||||||
class BrowserWindow;
|
class BrowserWindow;
|
||||||
|
@ -67,7 +68,8 @@ public slots:
|
||||||
void mainWindowCreated(BrowserWindow* window);
|
void mainWindowCreated(BrowserWindow* window);
|
||||||
void mainWindowDeleted(BrowserWindow* window);
|
void mainWindowDeleted(BrowserWindow* window);
|
||||||
|
|
||||||
void pageLoadStart();
|
void frameLoadStart();
|
||||||
|
void frameCreated(QWebFrame* frame);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void load();
|
void load();
|
||||||
|
|
|
@ -41,7 +41,7 @@ PluginSpec GM_Plugin::pluginSpec()
|
||||||
spec.name = "GreaseMonkey";
|
spec.name = "GreaseMonkey";
|
||||||
spec.info = "Userscripts for QupZilla";
|
spec.info = "Userscripts for QupZilla";
|
||||||
spec.description = "Provides support for userscripts (www.userscripts.org)";
|
spec.description = "Provides support for userscripts (www.userscripts.org)";
|
||||||
spec.version = "0.4.6";
|
spec.version = "0.5.0";
|
||||||
spec.author = "David Rosca <nowrep@gmail.com>";
|
spec.author = "David Rosca <nowrep@gmail.com>";
|
||||||
spec.icon = QPixmap(":gm/data/icon.png");
|
spec.icon = QPixmap(":gm/data/icon.png");
|
||||||
spec.hasSettings = true;
|
spec.hasSettings = true;
|
||||||
|
@ -114,7 +114,8 @@ QNetworkReply* GM_Plugin::createRequest(QNetworkAccessManager::Operation op, con
|
||||||
|
|
||||||
void GM_Plugin::webPageCreated(WebPage* page)
|
void GM_Plugin::webPageCreated(WebPage* page)
|
||||||
{
|
{
|
||||||
connect(page->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), m_manager, SLOT(pageLoadStart()));
|
m_manager->frameCreated(page->mainFrame());
|
||||||
|
connect(page, SIGNAL(frameCreated(QWebFrame*)), m_manager, SLOT(frameCreated(QWebFrame*)));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if QT_VERSION < 0x050000
|
#if QT_VERSION < 0x050000
|
||||||
|
|
Loading…
Reference in New Issue
Block a user