使用getElementById(field_name).value检测字段的设置值并拦截/覆盖它

时间:2015-09-15 16:46:46

标签: javascript html webview

我没有规定不调用尝试使用以下方法设置字段值的JS:

getElementById(field_name).value = 'someValue'

因此,作为替代方案,我试图查看是否有拦截/覆盖JS的方法来设置html中字段的值,并在满足某些条件时尝试限制它

如果有可能请告诉我?

这个问题似乎与thisthis重复,但事实并非如此。那些问题的解决方案想要改变代码,这对我来说不是一个选择。

1 个答案:

答案 0 :(得分:1)

我担心你不能这样做,所以如果你真的无法更改代码设置,那么你就会坚持使用非常丑陋的选项进行轮询和观看为了改变。例如,有点像这样的东西:

function polledInterceptor(id, callback) {
    var element = document.getElementById(id);
    var value = element.value;
    var timer = setInterval(function() {
        if (value !== element.value) {
            value = callback(element, value);
            if (value !== null) {
                element.value = value;
            }
        }
    }, 30); // 30 = 30ms
    return {
        stop: function() {
            clearTimeout(timer);
        }
    };
}

...然后像这样使用它:

var poller = polledInterceptor("field_name", function(element, oldValue) {
    var newValue = element.value;
    // ...decide what to do...
    return "someValue"; // or return null to leave the value unchanged
});

准备停止时:

poller.stop();