2011-12-23 9 views
16

Tương tác người dùng "chọn từ danh sách" của Apple có nút "hủy" - Tôi muốn "hủy" này để yêu cầu tập lệnh dừng ngay lập tức. Nói cách khác:Cách yêu cầu một bản tóm tắt ngừng thực hiện

set wmColor to choose from list {"Black", "Black for all", "White", 
    "White for all"} with prompt "What color should the watermark be?" 
    default items "White for all" without multiple selections allowed and 
    empty selection allowed 
if wmColor is false 
    *tell script to stop executing* 
end if 

Dường như không thể tìm cách làm điều này - có ai biết không?

Trả lời

23

Lỗi số -128 là "Người sử dụng đã bị hủy", và sẽ ngừng kịch bản - ví dụ:

if wmColor is false then 
    error number -128 
end if 
+3

Điều này chỉ hoạt động nếu không được bao gồm trong khối thử phát hiện lỗi như vậy. – spyle

1

tôi thấy việc này tốt cho các kịch bản chạy trong một ứng dụng (ví dụ, InDesign CS5.5) :

repeat 100 times 
    tell application ("System Events") to keystroke "." using command down 
    delay (random number from 0.5 to 5) 
end repeat 

Điều này đã được sửa đổi từ answer này.

7

"trở lại" kể về một kịch bản để ngăn chặn thực hiện:

display dialog "Do you want to exit this script?" with icon note buttons {"Exit", "Continue"} 
if the button returned of the result is "Exit" then 
    return 
end if 
+0

Bạn có thể xây dựng thêm câu trả lời của mình thêm một chút mô tả về giải pháp bạn cung cấp không? – abarisone

+0

Theo ý kiến ​​của tôi để ngừng thực hiện một kịch bản theo cách thông thường, nó là ** tốt hơn ** tùy chọn để sử dụng 'return' hơn là ném một ngoại lệ người dùng. – halloleo

+1

Vâng, không thực sự - nó cho trình xử lý hiện tại quay trở lại (không có giá trị). Nếu bạn đang ở cấp cao nhất của kịch bản, điều đó là tốt, nó sẽ kết thúc thực thi, nhưng nếu bạn đang trong một trình xử lý, nó sẽ trả về một con số không được gọi là nó và kịch bản sẽ vui vẻ tiếp tục thực hiện (với khả năng bất ngờ kết quả nếu người gọi không mong đợi một giá trị bị thiếu). – dsmudger

-1

Bạn có thể sử dụng từ "bỏ" để thoát khỏi ứng dụng hiện hành. Bạn có thể sử dụng điều này nếu bạn lưu tập lệnh của mình dưới dạng ứng dụng.

if wmColor is false 
    quit 
end if 
+5

Chỉ cần lưu ý rằng nếu bạn sử dụng lệnh quit trên một script chạy bên trong Script Editor, nó sẽ thoát khỏi Script Editor. – garetmckinley

+0

"thoát" không hoạt động nếu bạn đang ở trong một ứng dụng cho biết "Finder" khối. –