• 9813阅读
  • 3回复

使用webkit里evaluatejavascript函数为何没有任何效果? [复制链接]

上一主题 下一主题
离线jedisun
 
只看楼主 倒序阅读 楼主  发表于: 2010-04-08
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
我试图在我的程序里支持运行jsp脚本的功能,但是使用evaluatejavascript函数没有任何效果,返回值也总是为空。以下是我的代码

  1. m_JSPpage = new QDialog(this);
  2. //enable the javascript
  3. m_WebView = new QWebView(m_JSPpage);
  4. m_WebView->page()->settings()->setAttribute(QWebSettings::JavascriptEnabled,true);
  5. m_WebView->page()->settings()->setAttribute(QWebSettings::JavaEnabled,true);
  6. QFile scriptFile(":/test.js");
  7. scriptFile.open(QIODevice::ReadOnly);
  8. QString files = scriptFile.readAll();
  9. scriptFile.close();
  10. QVariant tableDatas = m_WebView->page()->mainFrame()->evaluateJavaScript(files);


test.js是个简单的helloworld
  1. <html>
  2. <head>
  3. <title>JavaScript的 Hello World 程式</title>
  4. </head>
  5. <body>
  6. <script type="text/javascript">
  7. document.write("Hello, world!") //直接在瀏覽器視窗顯示。
  8. alert("Hello, world!")      //開啟對話視窗顯示。
  9. </script>
  10. html超連結本文……
  11. </body>
  12. </html>


求教我的问题出在哪里,感激不尽.........
离线numen

只看该作者 1楼 发表于: 2010-04-08
不明白你要干什么
欢迎访问我的blog:
http://www.cnblogs.com/baizx
离线nqmti
只看该作者 2楼 发表于: 2010-04-19
我提供一下我成功執行javascript的方法,希望對你有幫助。

1。在QWebView子類的建構式中先把所需要的html檔讀入

QFile file(":/Resources/xxx.html");
    if (file.open(QIODevice::ReadOnly)){
        QByteArray html = file.readAll();
        file.close();
        this->setHtml(html);
    }

2。並且在load完html後利用自動產生訊號的loadFinished(bool)來呼叫我的function finished(bool)

connect(this, SIGNAL(loadFinished(bool)), this, SLOT(finished(bool)));

3。在finished(bool) function中呼叫javascript函式

if (ok){
        QWebFrame *frame = this->page()->currentFrame();
        frame->evaluateJavaScript("函式名()");
    }
离线cymurs
只看该作者 3楼 发表于: 2011-05-12
我是直接用load方法加载的html,关键在于使用这个信号和槽,之前一直不明白什么原因,这下终于解决了!真是太谢谢了
快速回复
限100 字节
 
上一个 下一个