Qt上でJavaScriptの実行をデバッグする


Qtで、WebKit Bridge で作成していると、Qt側での処理は、
QtCreator上でデバッグ可能ですが、値がWebKitへ渡った後の、
JavaScript実行までは追えません。

ただ、一昨日のQt 勉強会 #11 @Tokyoにて、
そのことについて口にしたところ、主催者の @task_jpさんから、

QWebInspectorクラスを使うといいよ」とのアドバイスをいただきました。

こんな便利なものまで、クラスであるのか!と喜び勇んで実装してみました。

  
//QWebInspector instance.
QWebInspector *inspector = new QWebInspector;
inspector->setPage(this->page());
inspector->show();
  

this->page() は、WebKitの、QWebView::page() のポインタを指定します。

ところが、とても残念な表示に。。。

空のWebインスペクタ

ちゃんと、show() しているんですけどね、、、なぜ出ないのだぁ〜、と悩むこと小一時間、もうすでに消えてしまったWebページで、検索キャッシュの中に答えを見つけました(笑)。

  
//↓これを追加。
view->page()->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);

QWebInspector *inspector = new QWebInspector;
inspector = new QWebInspector;
inspector->setPage(this->page());
inspector->show();
  

表示する側、Webページの方の、設定も変更しないと出ないということがわかりました。

検索しても、あまり事例が出ないところを見ると、QWebInspectorクラスがQtにあることを知らないか、
かつ、Web Bridgeとかする前に、HTML状態のJavaScriptをデバッグしてから載せろってことでしょうかね。。。

とりあえず、これも勉強会の宿題だったので、一つ解決っと。
 
 

お気軽にコメントをどうぞ〜

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントフィード

s