2016-01-22 75 views
0

我創建了一個腳本,每運行1秒查找一次值的變化。考慮代碼波紋管:腳本在瀏覽器中運行x秒是否有任何影響?

setInterval(function() { 
    var inputOne = jQuery('#0_img_file'); 
    var inputTwo = jQuery('.0_img-file').attr('src'); 
    return function() { 
     if (inputOne.val() !== inputTwo) { 
     jQuery('.0_img-file').attr('src', inputOne.val()); 
     } 
    } 
}(), 1000); 

因此,繼承人,我的問題,這可能會影響腳本的網站體驗的用戶或其他任何形式的東西,我不知道呢?

我知道有像jQuery中的函數,如onChange, change等,但它只適用於用戶自動更改值,我注意到它不捕獲更改,如果其他腳本更改輸入的值。

+0

um,存儲在input1中的jQuery對象永遠不會等於input2的src屬性.... – epascarello

+0

@epascarello ?? –

+0

您在頁面上還有哪些其他腳本可以更改輸入字段值?當這種變化發生時,那些不提供任何事件/鉤子來調用自定義代碼? – CBroe

回答

1

首先你的代碼每秒運行10次,而不是一次。但是,您的瀏覽器很可能在至少有2個千兆內核的計算機上運行,​​其中包含超線程,兆字節緩存以及您的名稱。所以不行,每100ms(或1s)重複一個簡單的任務不會顯着減慢你的瀏覽器,JS通常是相當快的。

只是不運行這樣的100個工作,你開始感覺它。當然,您應該只是修改腳本的事件來修改值,而不是輪詢更改,這對Javascript來說應該是可能的 - 因爲它的原型性質很容易插入現有代碼。

0

我注意到,如果其他腳本更改輸入的值,它不會捕獲更改。

那是因爲你可能使用.attr('value', something).attr('checked', true')代替.val(something).prop('checked', true)

因此,繼承人我的問題,這個腳本可以影響網站的經驗給用戶或任何其他的東西不知道?

當然可以。特別是如果腳本做了一些繁重的操作。許多瀏覽器只在一個線程中執行Javascript。所以當你的腳本啓動時,瀏覽器會在執行過程中凍結。如果你只有一個燈光腳本,沒關係。但是如果你濫用這種方法,你會遇到一些表演問題。

+0

當我說它不會通過另一個腳本捕獲更改時,請相信我。 –

+1

Magus,這不是關於閱讀價值,而是當它_changes_收到通知。 – CBroe

0

那麼,我認爲該網站會慢一點。該腳本每1秒調用一次函數,因此在優秀的計算機上不會出現太多問題。此外,並不是每個人都有好電腦。一些用戶使用慢速計算機的性能會有問題,所以需要使用其他方式。

相關問題