質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.62%

再修正【Javascript】【vbs】実行されない?

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 500

Beginner_ABC

score 645

お世話になります

以下のVBScriptを実行しても
Javascriptが 機能していないみたいなのですが
htmlの内容を .htmlファイルにして IEに D&Dして "ボタン"を押下すると
動作します (aleat表示、アイテム追加)

何がいけないのでしょうか?

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

set w = WScript

set GuiIE = CreateObject("InternetExplorer.Application")
GuiIE.Width = 300
GuiIE.Height = 450
GuiIE.ToolBar = false
GuiIE.StatusBar = false
GuiIE.Resizable = false
GuiIE.Visible = true
GuiIE.Navigate "about:blank"
do while GuiIE.Busy
  w.sleep 100
loop

' ユーザーIDとパスワードの入力ボックスと、ボタンを表示
html = ""  
html =  html  + " <form> " 
html =  html  + " <input type='hidden' name='CLICKED' value='false'/> " 
html =  html  +  " User ID: <input type='text' name='USERID'/> </br>"  
html =  html  +  " Password: <input type='password' name='PASSWD'/></br> " 
html =  html  +  " <select id='sel1'></select>  "  
html =  html  +  " <input type='button' value= 'ボタン'  onclick='createSelectBox();' /> " 
html =  html  +  "   <script type='text/javascript'>  "  
html =  html  +  "   var createSelectBox = function (){  " 
html =  html  +  "   var arr = [ " 
html =  html  +  "   {val:'01', txt:'ポチ'}, "  
html =  html  +  "   {val:'02', txt:'タマ'}, "  
html =  html  +  "   {val:'03', txt:'モモ'} "  
html =  html  +  "   ];  " 
html =  html  +  "  for(var i=0;i<arr.length;i++){  "  
html =  html  +  "  alert(arr[i].txt);  "  
html =  html  +  "   }  "  
html =  html  +  "  for(var i=0;i<arr.length;i++){  "  
html =  html  +  "   op = document.createElement('option');  "  
html =  html  +  "   op.value = arr[i].val;  "  
html =  html  +  "   op.innerText = arr[i].txt;  "  
html =  html  +  "   document.getElementById('sel1').appendChild(op);  "  
html =  html  +  "   console.log(arr[i].txt); "  
html =  html  +  "   }  "  
html =  html  +  " };  "  
html =  html  +  " </script> " 
html =  html  +  " <input type='button'  "  
html =  html  +  " onClick = ""getElementsByName('CLICKED')(0).value = 'true';""  " 
html =  html  +  " value='OK' />  "  
html =  html  +  " </form> "

GuiIE.Document.Body.InnerHtml = html
GuiIE.Document.Title = "VBScript GUI test."
wscript.echo html
' ボタンがクリックされるまで待つ
on error resume next

function is_clicked(GuiIE)
  is_clicked = GuiIE.Document.GetElementsByName("CLICKED")(0).value <> "false"
end function
do while GuiIE.Busy or not is_clicked(GuiIE)
  if Err.Number <> 0 then exit do
  w.sleep 100
loop

' 入力されたユーザー名とパスワードを表示
if Err.Number = 0 then
  userid = GuiIE.Document.GetElementsByName("USERID")(0).value
  passwd = GuiIE.Document.GetElementsByName("PASSWD")(0).value
  GuiIE.Quit

  w.echo "Your input userid and password" + vbcrlf + vbcrlf _
         + "userid: " + userid + vbcrlf _
         + "passwd: " + passwd
end if

回答者の方のアドバイスにより
以下のように したのですが
動作しません (再度修正)

scr =  scr  +  "   var createSelectBox = function (){  " 
scr =  scr  +  "   var arr = [ " 
scr =  scr  +  "   {val:'01', txt:'ポチ'}, "  
scr =  scr  +  "   {val:'02', txt:'タマ'}, "  
scr =  scr  +  "   {val:'03', txt:'モモ'} "  
scr =  scr  +  "   ];  " 
scr =  scr  +  "  for(var i=0;i<arr.length;i++){  "  
scr =  scr  +  "  alert(arr[i].txt);  "  
scr =  scr  +  "   }  "  
scr =  scr  +  "  for(var i=0;i<arr.length;i++){  "  
scr =  scr  +  "   op = document.createElement('option');  "  
scr =  scr  +  "   op.value = arr[i].val;  "  
scr =  scr  +  "   op.innerText = arr[i].txt;  "  
scr =  scr  +  "   document.getElementById('sel1').appendChild(op);  "  
scr =  scr  +  "   }  "  
scr =  scr  +  " };  "  

' ユーザーIDとパスワードの入力ボックスと、ボタンを表示
html = ""  
html =  html  + " <form> " 
html =  html  + " <input type='hidden' name='CLICKED' value='false'/> " 
html =  html  +  " User ID: <input type='text' name='USERID'/> </br>"  
html =  html  +  " Password: <input type='password' name='PASSWD'/></br> " 
html =  html  +  " <select id='sel1'></select>  "  
html =  html  +  " <input type='button' value= 'ボタン'  onclick='createSelectBox();' /> " 
html =  html  +  " <input type='button'   onClick = ""getElementsByName('CLICKED')(0).value = 'true';""  value='OK' />  "  
html =  html  +  " </form> "
wscript.echo scr
GuiIE.Document.Body.InnerHtml = html
script = GuiIE.Document.createElement("script")
script.innerHTML  = scr
GuiIE.Document.Body.appendChild(script)
GuiIE.Document.Title = "VBScript GUI test."
wscript.echo html
' ボタンがクリックされるまで待つ
on error resume next
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2019/09/08 14:58

    すみません。動作するのしますというのはどういうことでしょうか?

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2019/09/08 15:05

    編集ありがとうございますm(_ _)m

    キャンセル

回答 1

checkベストアンサー

+1

JavaScriptを除いたHTMLを突っ込んだ後で、VBSでcreateElement("script")して、そこにスクリプトを入れてbodyにappendChild`してください。

optionの作成自体をVBSでやってもいいのでは?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/08 20:09

    <script>タグを 削除して 実行しても 駄目でした
    どこが いけないのでしょうか?

    キャンセル

  • 2019/09/08 20:15

    script = GuiIE.Document.createElement("script")

    set script = GuiIE.Document.createElement("script")
    オブジェクトの代入にはsetが必要です。
    次の行で、エラーメッセージが出てたはず。

    キャンセル

  • 2019/09/08 20:18

    上手くいきました!!
    ありがとうございます!!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る