2016-01-22 71 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秒调用一次函数,因此在优秀的计算机上不会出现太多问题。此外,并不是每个人都有好电脑。一些用户使用慢速计算机的性能会有问题,所以需要使用其他方式。

相关问题