การรัน ActiveXObject ไม่ส่งคืน (เชลล์)

ฉันกำลังเรียกใช้เชลล์สคริปต์จากสภาพแวดล้อม JavaScript โดยใช้ ActiveXObject ทุกอย่างทำงานได้ดีถ้าฉันไม่ได้รวมพารามิเตอร์ใด ๆ ไว้ในฟังก์ชัน run:

var x = new ActiveXObject("WScript.Shell");
x.Run("%comspec% /K dir")
alert("I am here!")

ตามเอกสารประกอบ "วิธีการ Run ยังยอมรับค่าบูลีนเป็นพารามิเตอร์ตัวที่สามที่กำหนดว่าสคริปต์หยุดชั่วคราวจนกว่าโปรแกรมที่เรียกทำงานเสร็จแล้วหรือดำเนินการต่อด้วยคำสั่งถัดไปในสคริปต์แทน หากตั้งค่านี้เป็นเท็จ ( ค่าเริ่มต้น) วิธี Run เพียงออกคำสั่งให้รันโปรแกรมแต่ไม่ได้ตรวจสอบเพื่อให้แน่ใจว่าโปรแกรมรันจริง หากพารามิเตอร์ตัวที่ 3 ตั้งเป็น True สคริปต์จะรอให้โปรแกรมรันเสร็จส่งคืนจำนวนเต็ม รหัสทางออกที่โปรแกรมให้มา จากนั้นดำเนินการต่อในบรรทัดถัดไปของสคริปต์"

ฉันลองใช้ทั้งสองอย่าง

x.Run("%comspec% /K dir"), 1, True
alert("I am here!")

และ

x.Run("%comspec% /K dir"), 1, False
alert("I am here!")

แต่รหัสของฉันค้างอยู่เสมอ การแจ้งเตือนจะไม่แสดง ผมทำอะไรผิดหรือเปล่า? (ฉันต้องใช้อาร์กิวเมนต์ที่สาม = true ในโค้ดของฉัน) ขอบคุณ!


person Touloudou    schedule 28.05.2015    source แหล่งที่มา


คำตอบ (1)


คุณต้องใส่ข้อโต้แย้งไว้ในวงเล็บ:

x.Run("%comspec% /K dir", 1, true);

ขณะนี้สคริปต์ของคุณใช้ตัวดำเนินการลูกน้ำสองสามตัว ในตอนแรก มันจะรันเมธอด Run ประเมิน 1 และสุดท้ายก็แตกเป็นชื่อตัวแปรที่ไม่ได้กำหนด (True) JS คำนึงถึงขนาดตัวพิมพ์

person Teemu    schedule 28.05.2015
comment
แก้ไขปัญหาแล้ว! ฉันใช้ True แทน true... ขอบคุณ! - person Touloudou; 28.05.2015