IE上の選択テキストを必ず取得するには?

解決


みと  2008-07-04 10:37:39  No: 100873

起動済みのIE(インターネットエクスプローラ)に表示されているサイトのIEオブジェクトを参照して

    s = IE.Document.Selection.createRange().Text

を実行すると、IE上の選択されているテキストが取得されるのですが、
なぜか次の外国のサイトだけ選択テキストが取得できませんでした。
http://vbnet.mvps.org/index.html

取得には条件があるのでしょうか?
どういうときに取得されないのかご存知の方、教えて頂けないでしょうか?
また、必ず取得する方法がありましたらご教授願えませんでしょうか?

よろしくお願いいたします。


熊谷隆史  2008-07-04 19:13:03  No: 100874

Document.ExecCommandでクリップボードにコピーするとか。

Command Identifiers
http://msdn.microsoft.com/en-us/library/ms533049(VS.85).aspx


Hongliang  2008-07-04 19:22:19  No: 100875

フレーム構造をもったサイトの場合、それぞれのフレームの中身および frameset を定義している html について Document オブジェクトが作成されます。
IE.Document は直下のドキュメントを指しますから、そういうサイトの場合 frameset が定義されている html ファイルです。範囲選択するのは普通その子フレームのドキュメントでしょうから、IE.Document には選択範囲は含まれていません。

IE.Document の window から frames でフレームを扱うウィンドウを列挙し、それぞれの document について調べていく必要があります。
子フレームが更に frameset を定義してるなら孫フレームも見に行く必要がありますので、再帰的構造にしないと不足するでしょう。
判定は range の text が Nothing かどうかでできるかな。document が取れないとか createRange 失敗するとかの可能性もありますが。


みと  2008-07-05 08:00:14  No: 100876

熊谷隆史さん、Hongliangさん、ご回答ありがとうございます。

簡単に取得できるもだとばかり思っていたのですが、こんなに大変だとは・・・

やはりクリップボード経由で取得する方が簡単で確実のようですね。

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


みと  2008-07-05 08:02:33  No: 100877

「解決」のチェックを忘れていました。
失礼しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加