11

Giống như tiêu đề cho biết: setInterval chỉ kích hoạt gọi lại một lần.setInterval không hoạt động (chỉ kích hoạt một lần) trong tiện ích mở rộng của Google Chrome

manifest.json:

{ 
    //... 
    "content_scripts" : [{ 
     "js" : ["code.js"], 
     //... 
    }], 
    //... 
} 

code.js (ví dụ):

setInterval(alert('only shown once'),2000); 

Tại sao, và làm thế nào tôi có thể sửa chữa nó? Mã hoạt động tốt bên ngoài phần mở rộng (ngay cả trong một bookmarklet).

+1

bản sao có thể có của [JS setInterval thực thi chỉ một lần] (http://stackoverflow.com/questions/7746505/js-setinterval-executes-only-once) – qwertymk

Trả lời

31
setInterval(function() { alert('only shown once') },2000); 

Bạn cần phải vượt qua một tài liệu tham khảo chức năng như alert và không phải là một giá trị trả về alert()

+0

Ồ, bạn nói đúng. Có một vấn đề ở nơi khác và nỗ lực của tôi trong việc kiểm tra nó với cảnh báo là cẩu thả. Có một tham chiếu trong mã thực tế. –

+0

Bạn có thể giải thích lý do tại sao điều này hoạt động theo cách của nó? Tôi tương đối mới với JavaScript và muốn tìm hiểu càng nhiều càng tốt về nó. @qwertymk – J2N

+0

@JLaw [** Hãy xem câu trả lời này để có giải thích tốt hơn **] (http://stackoverflow.com/a/7746522/465546) – qwertymk

6

setInterval không đang làm việc ở tất cả.

Đối số đầu tiên phải là hàm , bạn chuyển giá trị trả về là alert() không phải là hàm.

Sử dụng phiên bản ba đối số:

setInterval(function,time,array_of_arguments_to_call_function_with); 
setInterval(alert,2000,['only shown once']); 
+0

Ồ, bạn nói đúng. Có một vấn đề ở nơi khác và nỗ lực của tôi trong việc kiểm tra nó với cảnh báo là cẩu thả. Có một tham chiếu trong mã thực tế. –

1

Cách bạn đã viết nó nó sai:

setInterval() muốn có một chức năng và một số giá trị: setInterval(function(){//your code}, timeInterval).

+0

Bạn nói đúng. Có một vấn đề ở nơi khác và nỗ lực của tôi trong việc kiểm tra nó với cảnh báo là cẩu thả. Có một tham chiếu trong mã thực tế. –

Các vấn đề liên quan