HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0106
webページのサイズを正常に取得できません。2未解決


リンク

2014/1/6(Mon) 22:55:22|NO.59213


Screen 0, 100,100//サイズは適当に。 url="http://www.yahoo.co.jp" axobj ie, "Shell.Explorer.2",640,480//IEコンポ作成 IE("Silent") = 1//スクリプトエラーが表示しないように。 ie->"Navigate" url//ページを表示 repeat//読み込みが終わるまで待機 wait 10 if( ie("Busy") == 0 ):break loop pDoc = ie("Document")//私には何をしているのかよくわかりませんが、 pBody = pDoc("body")//サイズを取得する前にこれが必要らしいので。 /*ここが問題の行です。yahooなどのページでは、 取得できたサイズが実際より500ほど小さく取得されます。 実際のサイズとのズレはページごとに異なります。 何か法則があるのかとも思いましたが、私には見つけることが出来ませんでした。*/ docW = pBody("scrollWidth")//x方向のサイズを取得 docH = pBody("scrollHeight")//y方向のサイズを取得 Screen 0,docW,docH//取得したサイズを元にウィンドウを初期化 axobj ie, "Shell.Explorer.2",docW,docH//IEコンポ作成 IE("Silent") = 1//スクリプトエラーが表示しないように。 ie->"Navigate" url//ページを表示 repeat//読み込みが終わるまで待機 wait 10 if( ie("Busy") == 0 ):break loop
webページのサイズを取得→そのサイズでウィンドウを初期化し、ページを表示

このようなプログラムを作りたいのですが、
webページのサイズが実際よりも小さく取得されてしまいます。
なぜでしょうか?



この記事に返信する


Tetr@pod

リンク

2014/1/6(Mon) 23:23:44|NO.59214

多分、読み込みが完全に終わっていない&スクロールバーの大きさが考慮されてないのが原因?

15行目、
>pDoc = ie("Document")
の下に

repeat//読み込みが終わるまでさらに待機 wait 10 if( pDoc("readyState") == "complete" ):break loop
を追加、23、24行目
>docW = pBody("scrollWidth")//x方向のサイズを取得
>docH = pBody("scrollHeight")//y方向のサイズを取得


// スクロールバーの大きさ分確保 docW = pBody("scrollWidth") + 30//x方向のサイズを取得 docH = pBody("scrollHeight") + 30//y方向のサイズを取得
にしたら動くっぽい?



リンク

2014/1/7(Tue) 11:06:10|NO.59228

Tetr@podさん、ありがとうございます。
理想的な動作になりました!

スクロールバーの大きさを考慮していない点はなんとなく思いつきましたが、
10行目~13行目でページが表示されるまで待機していたので、
「ページの表示は完了している。」と思い込んでいました;

本当に、ありがとうございましたm(__)m



ONION software Copyright 1997-2023(c) All rights reserved.