jQuery対応部のプログラム読み取り方法とは?

このQ&Aのポイント
  • C++BuilderXE2のCppWebBrowser(vc++2010のWebBrowserでも同じと思う)で表示したリアルタイムにデータを表示するページの jQuery対応部のデータをプログラムで取得する方法を教えてください。
  • このページのソースを見ると、特定の部分のデータがサーバから転送されて表示されていることがわかります。JavaScriptかIEがこの部分でサーバからGETなどをしていると思われます。
  • 現在の計画では、イメージを読み取る方法で進めていますが、より効率的な方法があるか相談したいです。
回答を見る
  • ベストアンサー

jQuery対応部をプログラムで読む

C++BuilderXE2のCppWebBrowser(vc++2010のWebBrowserでも同じと思う)で表示したリアルタイムにデータを表示するページがあります。このデータをCppWebBrowserを起動したプログラムでリアルタイムに取得することを考えています。 このページのソースをみると、どうも、たとえば <LI style="WIDTH:14%" jQuery9999999="id">       999999は固定数字、idは種類を表すらしい数字です。 このjQueryに対応した部分のデータが、サーバから転送されて表示しているようです。 想像では、javascriptかIEがこの部分で、サーバからGETなどをしているのかなと思いました。 ajax(よく知らないですが)ではないと思います(起動時に選択されるから)。 このデータのプログラムによる取得はどうすればよいでしょうか。あるいは手がかりなどご教示願えないでしょうか。 表示した数値を、取得できてもよいのですが、方法は多分ないのではと思います。 現在計画では、イメージを読み認識させる方法で進めていますが、いかにも泥臭く大変ではありますので、なにか良い方法がないかとご相談しました。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.7

IEではなく、FireFoxです。

qhtsige
質問者

お礼

FireFoxなら完全に読めました。(こんなこともあるのだ) Current_timeはbo.jsにあることは確認できました。でもこれはシステム時刻でサーバタイムではなかったかもしれませんね。 もっと典型的な <SPAN class=sp1>--</SPAN></TD> <TD class="pr1 ticket">--</TD> <TD class="tm1 odds">--</TD></TR> のsp1,pr1,tm1について全部の*.js(30個ほどある)検索しましたが、ヒットしませんでした。これでヒットしないと解せない話です。この部分だとおもうのですが。 明日、データが変化しているときに調べて見ます。

qhtsige
質問者

補足

解決しました。 なんのことはない、htmlでは、リアルタイムに変化する部分には数値が入っていました。 該当部分をscript上でIDやclass名などで対応つけているはずと予想される件は確認できていないわけですが。 あるいはページを毎度refreshしているのでしょうかね。 イベントで確かめて見ます。 refreshしていないのであれば、更新した部分だけをHTML上で書き換えて、ブラウザに渡すのですね。その方が素直な考えと納得します。 HTMLに入っているなら、htmlを直接textとして読むか、DOMで読むかをすればよいので、項目数は多数ありますが、問題ないです。自分としては直接タグを力づくで読むほうが簡単です。 休日に調査したのが間違いでした。 今回色々教わり参考になり、ありがとうございました。

その他の回答 (6)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.6

>でも、*.jsファイルを全部見ましたが、current_timeは見つかりませんでした。他にPriceBord.filesが読めなかったのですが、これが肝心のような名前で残念です。 え?bo.jsにありますけど。 オブジェクトを得る所。 // cache time panel jq object bo.$.current_time = $('#current_time'); 更新している所。 bo.$.current_time.html(bo.utils.date_string(d)); javascriptでjQuery/DOMの仕組みを理解していないと意味不明かも知れませんが。 #current_timeが書き換えられらイベントでC++に取り込むことが出来ると思います。 「HtmlDocument.AttachEventHandler メソッド (System.Windows.Forms)」 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.htmldocument.attacheventhandler.aspx このあたりが出来れば取り込めるはずですが未経験なのでアテにしないでください。

qhtsige
質問者

お礼

うーん困った。提示url”http://min-fx.jp/bo/”のデモ取引画面をクリックして、完全WEBページで名前をつけて保存で、 このwebページは保存できないとなるのです。 提示URLだけならばOKです。セキュリティを中、保護モードを有効にするのチェックをはずして再立ち上げしても同じです。これはwindows7ですが、windowsXPでも同じです。 ならばと開発者ツール(F12)ならば、bo.jsは開けるのですが、この画面では文字の検索ができないのです。  どのような手順でやられましたか。 HtmlDocument.AttachEventHandler メソッド を使うと、できる可能性があるのですか。難しそうですが、調べて見ます。

qhtsige
質問者

補足

IEのバージョンは、windows7はIE9,windowsXPはIE8です。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.5

保存方法は、ファイル→名前を付けて保存で「WEBページ完全」とすれはjsファイルもローカルに保存されます。 ><div id="current_time_container"><span id="current_time">----/--/-- --:--:--</span></div> >これがscriptやajaxの何に相当するのでしょうか。 javascriptやjQueryだと一例としてidをキーとして書き換えを行います。 ここだとspanにあるid="current_time"のcurrent_timeを書き換えキーとして使っていると思うので、bo.jsでcurrent_timeを探してください。でも、結局javascriptのソースコードが読めないと理解できないと思いますけどね。

qhtsige
質問者

お礼

>WEBページ完全」とすれはjsファイルもローカルに保存されます。 開発ツールでなくとも、こうすれば良いのですね。初めて知りました。 でも、*.jsファイルを全部見ましたが、current_timeは見つかりませんでした。他にPriceBord.filesが読めなかったのですが、これが肝心のような名前で残念です。 対応が一つでもわかれば、それを元に、javascriptを調べて見る気になるのですが。 それがわかっても、それと同じことをC++からどうやればできるかが問題になります。  少しづつ問題の所在がわかってきました。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.4

追っかけていないので、どれが最初かは不明ですがbo.jsなどで$.post()やら$.ajax()やらしてますよね。なんか中国人が書いたようなコメントも見受けられますが。

qhtsige
質問者

お礼

scriptのbo.jsの中に、$.post()があるのですよね。 scriptの中を見るにはどうすればよいのですか。開発者ツールを動かしましたが、あまり使ったことがないので操作がわかりません。 クリックで要素を選択(左上向き矢印)しておいて、スクリプトタブで左ペインのbo.jsの行をクリックするのでしょうか?何も出てこない。 端的な例として、休日でも更新される日付時刻データに注目していただけるとありがたいです。 このソースにおいて、表示の際の該当部分は、秀丸エディタで現在824行目の <div id="current_time_container"><span id="current_time">----/--/-- --:--:--</span></div> これがscriptやajaxの何に相当するのでしょうか。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

HTMLとjsを見る限りJQueryでAjaxしまくっています。 まぁ、CppWebBrowserを駆使すれば出来るものを思いますが、私もWebBrowserを軽く知っているだけなので自信はありません。C++Builder系は未経験です。 「WebBrowser.Document プロパティ (System.Windows.Forms)」 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.webbrowser.document.aspx 「HtmlDocument メソッド (System.Windows.Forms)」 http://msdn.microsoft.com/ja-jp/library/69b0ah2f.aspx

qhtsige
質問者

お礼

重ねて質問で申し訳ありませんが、 >HTMLとjsを見る限りJQueryでAjaxしまくっています。 どの箇所がそうなりますか。ソースで最初に出てくる箇所を教えて下さい。タグの名前などで。 javascriptは使ったことがないのでわからないのですが、scriptはソース上になく、指定された場所を調べられたのでしょうか。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

そのサイトを教えてもらうほうが早そうです。 ちなみにWEBサーバーからの情報でリアルタイムに更新するにはページのリロードかAjaxぐらいしか選択肢はありません。

qhtsige
質問者

お礼

本来の使用はログインが必要ですので開示できかねますが、開いたことはありませんがデモ画面があるようです。今の時間帯(12-18)は使えませんが、本来ページと 同じかどうかはわかりませんが、同じ可能性はありそうです。 デモ画面の右側ペインの数値のみで、グラフは関係ありません。 http://min-fx.jp/bo/ ページのリロードではないことは判断できます。 Ajaxをその後さらに調べて、非同期javascriptXHTMLだそうで、ページの一部をリロードなしに更新できる技術だそうですね 。そのような動きであります。 理解を進めるには、そのような動きのテストページを作るのがよさそうですが、どんな技術、ツールを使っているのかを把握しておかねばなりません。またその場合ページをサーバに置かねばならないでしょうか。ローカルにテストできるかどうか?

qhtsige
質問者

補足

すみません。どうも、ソースの見方を誤っていたようです。 最初に例示した <LI style="WIDTH:14%" jQuery9999999="id"> は違っているようです。 例えばチケットの箇所は <td class="pr1 ticket">--</span></td> らしいのですが、これですと数値がそのまま埋め込まれているようにも思えます。(それなら簡単です) 再度、データが動いているときの状態を確認して見ます。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

リアルタイムに表示が変化するならAjaxでしょう。 ただ、勝手に相手のサイトの表示情報を掠め取るのはサイトの利用規約違反の可能性があります。そこは大丈夫でしょか?

qhtsige
質問者

お礼

>リアルタイムに表示が変化するならAjaxでしょう。 このように判断された理由は何でしょうか。他に可能性はないのでしょうか。jQueryの文字とその使い方がその判断に大きく寄与することはありませんか。 >利用規約違反の可能性があります。そこは大丈夫でしょか? 再確認しましたが、そのよう記載はありません。ましてや個人利用です。 jQueryで検索すると、AJAXの"jQuery"なるツールの使い方はよくヒットしますが、そのHTML上での現れ方の情報は見つけられませんでした。それでどのような関係になっているのだろうとお尋ねしました。 質問の趣旨のご回答を引き続きお待ちします。

qhtsige
質問者

補足

補足です。AJAXでないと思った理由は、最初に表示するページを選択するステップがあるのですが、選択肢として ・ajax ・PC画面(IE) があり、PC画面を選択しているので、そう思いました。 ただ、PCでもAJAXを使っている可能性はあるかもしれませんが。 確認する方法は、ヘッダなどにあるでしょうか。

関連するQ&A

  • Jqueryのキャッシュについて

    JqueryからCGIを呼び出して、DBと接続し、その戻り値をHTMLページに反映しています。 処理をして、ブラウザを再起動すると処理されたデータで表示されるのですが、ブラウザを再起動しないと、処理する前のデータが表示されます。ページをリロードしても同じです。 下記のようにCGIを呼び出してDBと接続をしているのですが、 キャッシュがあると良くないと言うことが書いてあったので、 cache: false, を追加したり、 $.ajax({ type: 'GET', url: '~.cgi', cache: false, //←追加 data: ''', success: function(result){ if (result != ''){ 処理をする } } $.ajaxSetup({ cache: false }); ↑を追加してみたりしたのですが、これらの部分からあとのプログラムが動きません。 (エラーになっている?ような感じです) これらを削除してプログラムを動かすと、キャッシュが残っているような結果が帰ってきます。 要するに、DBの値を修正、削除をして、その後のデータを表示したいのですが、 削除後、修正後のデータが表示されません。 ブラウザを再起動すると、修正、削除されている状態で表示されます。 ブラウザを再起動しなくても処理をした後の結果がHTMLページに表示されるようにしたいです。 わかりにくい説明で申し訳ございませんが、ご不明な点はお聞き下さい。 どなたかおわかりになる方がいらっしゃいましたら教えて下さい。 よろしくお願いいたします。

    • ベストアンサー
    • AJAX
  • PHPとjquery

    PHPの内部処理をjqueryを使ってブラウザ上で進捗状況をリアルタイムで見せてくれるようなものは作れますか? jqueryで動的なwebページを作れると聞いての質問なのですが。jqueryは少ししか触っていません 例えば <?php $i = 1; while( $i <= 10 ){ echo "実行中<br>\n"; $i++; sleep(5); } ?> というプログラムがあって、普通に実行したらまとめて10個の"実行中"が表示されるだけですが、これをプログラム処理と同期させてページを更新させること無しに一つづつブラウザに表示させて行くというような処理は可能なのでしょうか?教えてください

  • javascript・jQueryのプログラム

    javascript・jQueryのプログラムについて javascript・jQuery初心者です。 ホームページ制作でやりたいと思っていることがあるですが、うまくいかないのでご教授願います。 写真にも書いているのですが、一番外枠に<div id="main">で外枠を作り、 その枠の中に<div id="karenda">と<div id="jouhou">と2つのボックスを作っています。 上の<div id="karenda">にjavascriptかjQueryでカレンダーを表示するようして、 カレンダーの日付をクリックすると、下の<div id="jouhou">の枠内に クリックした日の情報をリスト形式で表示させるようにしたいのです。 表示させる情報とは、友達に自分で作った作品を売っている仲間がいるのですが、 まだお店を持っていなくてフリマなどの路上販売なので、 「どこどこに、時間、場所」などを表示させたいです。 色々考えてみたのですがいまいちうまくいかなかったので 表記の仕方など教えていただけたらありがたいです。 よろしくお願いいたします。

  • jQuery slider2のページアイコン

    小生、ウェブサイト制作経験はアリながらもJavascriptに関しては全くの素人です。 既成のJavascriptプログラムの中でスライドショー向けのjQuery slider2をダウンロードし、 ウェブサイトに適応してみました。 概ね思った通りに作動するものの、スライダー部分の右下に表示されページアイコン(class="jquery-slider-page"として作成されている部分?)が、現在表示している部分に相当するアイコンをクリックすると、現在表示している画像を進行方向に流してしまい、背景が表示されるようになっています。 なおかつ、背景が表示された状態でもう一度同じアイコンをクリックすると、消えているはずの現在ページが一瞬表示されるものの、すぐに進行方向へ流してしまうというおかしな動作をします。 もともと期待されていた動作ではないと思うのですが、ダウンロードしてきたものをそのまま使ってこのような動作になってしまっていました。 不得手ながら中身を読み取ってみたところ、現在表示しているページのページアイコンをclass="jquery-slider-page"からclass="jquery-slider-page-current"に書き換えることで、アイコンの表示を変更しているようなので、一時的にclass="jquery-slider-page-current"のクリックを不可にすれば解決するのかなとは思うのですが、何かよい方法はないでしょうか。 使用しているjsは下記のとおりです。 https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js jquery.slider.min.js(http://wex.im/javascript/jquery-slider2にて公開されているファイルをダウンロードして使用) また、専用のCSSも特に書き換えなどせずに読み込ませて使用しています。 他にもjs併用はしていますが、紹介サイトでも同様の動作をしていたので、他のjsによる干渉などではない様です。 よろしくお願いします。

  • jqueryについて質問させてください。

    jqueryについて質問させてください。 cluetipというjqueryプラグインを使って、ページにツールチップを表示するようにしたくて、いちおう、cluetipのドキュメントなどを読んで設置してみたところ、 ローカル上ではちゃんと表示されるのですが、サーバーにアップロードしてから見ると、ツールチップが表示されなくなってしまいます。 また、ブラウザによっては、再度読み込みを行うとツールチップが表示される様になる場合もありました。 完全に行き止まり状態になってしまいました。 【問題のページです】 http://www.g-land.net/gift001/froschgift001.html 上記ページのフォーム部分にloadで別のhtmlから <div id="gift_01_02" class="firstspan"></div> にフォームを呼び出しています。 周りにも質問できる方がいないので、何卒宜しくお願いいたします。

  • jQuery Mobileでのページ遷移、挙動

    jQuery Mobileを使ってスマートフォン用のサイトを作成しています。 ページ遷移時の挙動が直せなくて困っています。 1つのHTML内に複数のページを作るやり方ではなくて、 リンクには rel='external' フォームには data-ajax='false' をつけて、 Ajaxでのページ遷移を行わないようにしているつもりです。 で、おかしな挙動なのですが、 1.AのページからリンクをクリックしてBのページを表示する。 2.ブラウザの戻る機能でAのページに戻る 3.再びリンクをクリックしてBのページを表示する。 このとき、Bのページが表示された後、「Loading」というメッセージが表示され、 Aのページを表示してしまいます。(AのページをAjaxで読み込んでいるか、 Bのページが何らかで非表示になっているように思えます) $.mobile.ajaxLinksEnabled = false; という設定も試してみたのですが、 特に変化はありませんでした。 この解決策を教えてください。 出来れば、jQuery Mobileのデザイン関連だけ使って、ページ遷移絡みは 使いたくないという気持ちです。

  • jQueryでDOM生成後に値を取るとNULL

    下記のような内容でjQueryを使ってDOMの中身を生成後、その値をjQueryで取ろうとしてもNULLになります。 <-- htmlの本体 --> <select id="user"> </select> <-- ページ読み込み時 --> $(document).ready(function () { ↓ ajaxをつかってサーバーのPHPがDOMの中身を生成し、呼び出し元に戻す ↓ <select id="user"> <option value="1">山田さん</option> <option value="2">鈴木さん</option> </select> ↓ DOMの中身が追加された直後に、 user_id = $("#user").val(); としても、値がNULLとなります。 これは、ajaxでDOMの中身を生成して挿入しても、html本体にあるのは中身のない<select id="user">となっているから、NULLが返ってくるという理解でいいのでしょうか? <select id="user">を変更したときに、値を取得するという関数を作ると、正しい値が取得されます。 希望しているのは、ページ読み込み時にDBから値を取ってきてリストボックスを生成し、生成されたリストボックスの一番上の値を使って、別のDOMをさらに生成する、と言うのを自動で行いたいのですが、これは無理なのでしょうか?

  • PHPとjQueryでツリー

    はじめまして。プログラムを独学で学んでいる者です。 今回初めて開発をしてみたのですが、どうしてもうまくいかないため こちらに投稿した次第です。 やりたいことは以下の通りです。 PHPとJQueryツリー構造 (完成図) 親 ■ツリー(1)  |  ■親データ(2)  | |  |  ∟■子データ(3)  |    |  |     ∟■孫データ(4)  |       |  |        ∟■孫2データ(5)  |  ■親データ  | |  |  ∟■子1データ  |  ■親データ  | |  |  ∟■子1データ  | |  |  | |   ∟■孫1データ  | |  |  ∟■子2データ  |  ■親データ  | |  |  ∟■子1データ  |    |  |     ∟■孫1データ  |       |  |        ∟■孫2データ  |  ■親データ 表示部分で親データの表示をだしつつ、子データのSQLをとばして子データの表示をだしつつ、孫データのSQLをとばす。 これを繰り返したい。 (1)まず親データのSQLをとばす。 (2)親データを一件取得したら、表示する。その親SQLで得られた結果をもとに子SQLをとばす。 (3)子データがあれば表示。(なければ2件目の親データを取得。) 子SQLで得られた結果をもとに、さらに子SQLを飛ばす。 (4)そこに結果があれば孫データとして表示。(なければ2件目の親データを取得) 得られた結果をもとに子SQLを飛ばす。 (5)結果があれば次の孫データとして表示。 結果が存在しなければ、親データに戻り・・・・繰り返し上記のように処理する。 自分で試行錯誤し、phpとjQueryでなんとか上図のように親--子--孫と出せるようになりました。 しかし、1件ごとに子・孫データが無いかSQLを飛ばして調べるので、非常に時間がかかります。 データが30件ほどあると表示するのに10分はかかります。 処理しきれずに途中で終わってしますこともシバシバ・・・・。 他の方法として考えたのが、親データがクリックされたら子SQLを飛ばして展開部分を表示するという方法です。 しかしクリックしたらメソッドを呼び出すという、phpの処理を分割することはできないとネットに乗っていました。 (私の調べ方に問題があったのかもしれませんが・・・) <ul> <li id=id>親データ   <ul>     <li id=id2>子データ      <ul>      <li id=id3>孫データ      </ul>  </ul> <li id=id>親データ2 ・ ・ ・ ↑のような構造で「<li id=id>親データ」がクリックされたときに、phpの子SQLをなげる仕組みなどは 可能なのでしょうか? それとも地道にSQLを投げて1件ずつ確認する方法しかないのでしょうか? プロの方の意見等、知恵をお借りしたいです。 ご教授よろしくお願い致します。

    • 締切済み
    • PHP
  • JQueryでのAJAXで困ってます

    最近AJAXを勉強しようと思い、JQueryに手を出しました。 JQueryで画面遷移無しでdivで作ったメニューを選択して内容を指定したdivに表示させようと思っているのですが、 JQueryでのloadの動作がブラウザの違いで異なる動きをするので困ってます。 IEでは内容が表示されて、新しく表示した部分のJavaScriptが正しく動くのでいいのですが、 Firefox、Operaでは新しく表示した部分のJavaScriptが動作しません。 Chromeでは新しく表示した部分のCSSでさえ適用されません。 IE以外でも正しく動作させるにはどうしたらいいでしょうか? ご回答、よろしくお願いします。

    • ベストアンサー
    • AJAX
  • jqueryMobileがAjax?

    Ajaxという単語の意味がわからなくなりました… jqueryMobileの様々な解説をみているとページ切り替え時とかにAjaxによってとかいう表現が出てきますが、jqueryMobileは既にサーバーから取得したHTMLをjavascriptで表示切り替えしてるだけで、各ページの情報を適宜サーバーから取得しているというわけじゃないと思います。 Ajaxの定義はjavascriptを用いてページ遷移をすることなくサーバーと通信すること、と思っていたので、このjqueryMobileのAjaxという単語の使い方に違和感を覚えます。 jqueryMobileの解説でのAjaxって単語の使われ方は正しいんでしょうか? それともjqueryMobileは実際はクライアントサイドでの表示切り替えだけでなくサーバーとの通信を行ってるんでしょうか? 参考 http://dev.screw-axis.com/doc/jquery_mobile/components/pages_dialogs/page_links/