diff --git a/python/pyphantomjs/phantom.py b/python/pyphantomjs/phantom.py index 7c8ca003..be4cfff3 100644 --- a/python/pyphantomjs/phantom.py +++ b/python/pyphantomjs/phantom.py @@ -65,6 +65,8 @@ class Phantom(QObject): self.m_defaultPageSettings['userAgent'] = self.m_page.userAgent() self.m_page.applySettings(self.m_defaultPageSettings) + self.scriptLookupDir = os.path.dirname(os.path.abspath(self.m_scriptFile)) + # inject our properties and slots into javascript self.m_page.mainFrame().addToJavaScriptWindowObject('phantom', self) @@ -118,7 +120,15 @@ class Phantom(QObject): @pyqtSlot(str, result=bool) def injectJs(self, filePath): - return injectJsInFrame(filePath, os.path.dirname(os.path.abspath(self.m_scriptFile)), self.m_page.mainFrame()) + return injectJsInFrame(filePath, self.scriptLookupDir, self.m_page.mainFrame()) + + @pyqtProperty(str) + def scriptLookupDir(self): + return self.m_page.scriptLookupDir + + @scriptLookupDir.setter + def scriptLookupDir(self, dirPath): + self.m_page.scriptLookupDir = dirPath @pyqtProperty('QVariantMap') def version(self): diff --git a/src/phantom.cpp b/src/phantom.cpp index d526a44a..419a29c9 100644 --- a/src/phantom.cpp +++ b/src/phantom.cpp @@ -158,6 +158,8 @@ Phantom::Phantom(QObject *parent) m_defaultPageSettings["userAgent"] = QVariant::fromValue(m_page->userAgent()); m_page->applySettings(m_defaultPageSettings); + setScriptLookupDir(QFileInfo(m_scriptFile).dir().absolutePath()); + m_page->mainFrame()->addToJavaScriptWindowObject("phantom", this); QFile file(":/bootstrap.js"); @@ -222,10 +224,20 @@ void Phantom::exit(int code) } bool Phantom::injectJs(const QString &jsFilePath) { - return Utils::injectJsInFrame(jsFilePath, QFileInfo(m_scriptFile).dir().absolutePath(), m_page->mainFrame()); + return Utils::injectJsInFrame(jsFilePath, scriptLookupDir(), m_page->mainFrame()); } void Phantom::printConsoleMessage(const QString &msg) { std::cout << qPrintable(msg) << std::endl; } + +QString Phantom::scriptLookupDir() const +{ + return m_page->scriptLookupDir(); +} + +void Phantom::setScriptLookupDir(const QString &dirPath) +{ + m_page->setScriptLookupDir(dirPath); +} diff --git a/src/phantom.h b/src/phantom.h index 3393a80a..ee93ffbf 100644 --- a/src/phantom.h +++ b/src/phantom.h @@ -42,6 +42,7 @@ class Phantom: public QObject Q_OBJECT Q_PROPERTY(QStringList args READ args) Q_PROPERTY(QVariantMap defaultPageSettings READ defaultPageSettings) + Q_PROPERTY(QString scriptLookupDir READ scriptLookupDir WRITE setScriptLookupDir) Q_PROPERTY(QVariantMap version READ version) public: @@ -54,6 +55,9 @@ public: bool execute(); int returnValue() const; + QString scriptLookupDir() const; + void setScriptLookupDir(const QString &dirPath); + QVariantMap version() const; public slots: