dポイントプレゼントキャンペーン実施中!

javascriptのリンクが、<a href="javascript:void(0);">なんたらかんたら</a>
であれば記載のソースが通じるのですが、

【今回の問題】

【html部分】
onclick="javascript:updateDisp();return false;" alt="なんたらかんたら"><input type="hidden" name="allupdate" value="なんたらかんたら">

【javascriptの部分】
function updateDisp(){
update_flg = window.confirm("なんたらかんたら");
if(update_flg == true){
document.updateForm.submit();
}
else{
alert("キャンセルしました。");
}


とやられた途端に全く通じなくなりました。
どのように回避したらよいでしょうか。

【今回のではなく前回の(javascript:void(0);)成功分】
Private Sub CommandButton99_Click()

Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True

objIE.Navigate "http://xxxx/entry"
Do While objIE.Busy = True
DoEvents
Loop
Application.Wait (Now + TimeValue("00:00:03"))

objIE.Document.all("ShopShopId").Value = Range("C8")
objIE.Document.all("ShopPassword").Value = Range("C9")
objIE.Document.forms(0).submit

Application.Wait (Now + TimeValue("00:00:05"))

For Each Obj In objIE.Document.getElementsByTagName("a")

If Obj.innerText = "なんたらかんたら" Then
Obj.Click

Exit For
End If

Debug.Print objIE.LocationURL
objIE.Navigate "xxxx/entry/entry_tops/all_update?prm=xxxxxxxxxxxxxxxxxxxxxxx"
For i = 0 To objIE.Document.Links.Length - 1
If objIE.Document.Links(i).href = "javascript:void(0);" Then
Application.Wait (Now + TimeValue("00:00:05"))
objIE.Document.Links(i).Click
Application.Wait (Now + TimeValue("00:00:05"))

Exit For
MsgBox "ループ抜け"
End If
Exit Sub

Next
Next

objIE.Quit

End Sub


上記は【今回の問題】に通じません。

'objIE.Navigate.Document.updateForm.fireEvent ("なんたらかんたら")

'objIE.Document.Script.updateDisp "javascript:document.updateForm.submit(true);"

など試行錯誤しておりますが、javascriptのポップアップが回避できません。

どなたか何とかご教授お願いいたします。

A 回答 (6件)

サンプル書きました。


https://gist.github.com/4028479
    • good
    • 0

(IEなら)CommandStateChange イベントで


FindWindow APIでそのMsgBox のウィンドウハンドルを得られるので、
PostMessage APIでそのハンドルに対してWM_COMMANDを送出。
    • good
    • 0

正攻法がある様で。


http://twitter.com/honda0510/status/247110172198 …
だそうです。

この回答への補足

お返事が遅れまして大変申し訳ございません。他の作業で忙しくご回答で出来ていませんでした。この正攻法は後で試して評価をさせていただきます。

補足日時:2012/10/15 15:55
    • good
    • 0

試していないが、こんな感じでwindow.confirm関数を書き換えるとか。



window.confirm = function() { return true; }

参考URL:http://oshiete.goo.ne.jp/qa/7429212.html

この回答への補足

実はこのreturn falseなのでtrueならと私も考えてやってみたのですが、うまく動作しませんでした。お返事が遅くなり申し訳ございません。

補足日時:2012/10/15 15:57
    • good
    • 0

「VBA IE setTimeout」でググるとか。

この回答への補足

ヒントを頂きありがとうございます。後で検索して結果をご報告します。

補足日時:2012/10/15 15:58
    • good
    • 0

>javascriptのポップアップが回避できません。


から、質問が、javascriptのだすポップアップを出さないようにする方法はどうすればいいか?
ということなら、
無理です。
window.confirm("なんたらかんたら");
はOSのメッセージボックス(「確認ダイアログ」というのが正しいんでしょうけど)を出す命令です。

sub button1_click()
x=msgbox("なんたらかんたら",vbyesno)
if x = vbyes then
・・・
end if
exit sub
というボタンを押したときの処理があって、
msgboxを出さずにxに値を入れて・・・を動かせといっているのと同じです。
button1.click
と書いて呼び出しているその中の変数xに外部から値をセットできないし、メッセージボックスを
出せなくできないのと同じです。
(javascript自体を動かしたくなければIE等ブラウザの設定で動かなくできますが、
 全部動かないのはお望みではないでしょう。)
また、メッセージボックスを出さないようにするだけならOSをさわるようなプログラムを作れば
できなくはないかもしれませんがウイルスと間違われて対ウイルスソフトが
ブロックするのがオチかなと思います。
(というか、しちゃダメです。。。)

この回答への補足

ちょっと変な話ですが、X軸Y軸が正確に設定できる自動クリックソフトで時間を設定して暫定対処をしています。

補足日時:2012/10/15 16:07
    • good
    • 0
この回答へのお礼

お返事が遅れまして申し訳ございません。サイト側が何らかの理由で自動更新を出来ないような工夫を凝らしているのかもしれません。タダログインしてクリックするようなサイトですので何故そのようなことをするのかもわかりませんが、

Siegrune様の回答が大変的を得ていると思います。お返事が遅れまして申し訳ございませんでした。

kumatti1様の真偽を確認した上で評価をさせて頂きますので暫くお待ちください。

お礼日時:2012/10/15 16:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!