2016-09-28 3 views
0

私はこのようになりますQRCファイルがありますため、別のJavaScriptを追加することindex.htmlを内部QWebViewはQtリソースファイルから* .jsをロードして実行できますか?

function myFunction() 
    { 
     window.alert("Hello from assets.js"); 
    } 

:ちょうどallertポップアップする機能を追加すること assets.js インサイド

<qresource prefix="/web"> 
     <file alias="assets.js">../web/assets.js</file> 
     <file alias="index.html">../web/index.html</file> 
</qresource> 

をアラートポップアップ、assets.jsをロードし、2つのボタンを追加します。私はをロードしようとしているとき、今

<!DOCTYPE html> 
<html> 
    <head> 
    </head> 
    <body> 
    <script> 
     function localFunction() 
     { 
      window.alert('HTML loaded'); 
     } 

    </script> 

    <script src="assets.js"></script> 

    <button onclick="myFunction()">External JS</button> 
    <button onclick="localFunction()">Local JS</button> 


    </body> 
</html> 

のindex.htmlファイルに埋め込まれたJavaScriptを呼び出すために外部のJavaScriptファイル(assets.js)と第二の窓からのポップアップを呼び出すための最初の1 qtwebkit内のindex.html

webView->load(QUrl(QStringLiteral("qrc:/web/index.html"))); 

は、私は(私は2つのボタンを見ることができます)のindex.htmlがOKロードされていることがわかります をクリックボタンは、それが動作するローカル(HTML埋め込み)のjavascriptを呼び出す必要があります。 2番目のボタンをクリックしても何も起こりません。

assets.jsが正しく読み込まれていないようです。 どのように私はそれを働かせることができますか?

ありがとうございました。

+0

[this](http://stackoverflow.com/questions/15187296/can-qwebview-load-images-from-qt-resource-files)の質問は役に立ちます。 – putu

答えて

0

JavaScriptはHTMLから評価されていません。 JSファイルが見つかりませんでした。

const QString js = readFile("qrc:/web/assets.js"); // Load your javascript file 
view->page()->mainFrame()->evaluateJavaScript(js); 

別の解決策、より効率的な:

<script src="assets.js"></script> 

明示的にそれを試してみてください:QRCシステムを使用し、正しく、すべてのファイルをリンクするsetHtmlにbaseUrlに設定:

const QString html = readFile(":/index.html"); 
    view->setHtml(html, QUrl("qrc:/")); 
次は効果がありません
関連する問題