setTimeout的智能替代品

时间:2013-11-27 00:43:23

标签: javascript function settimeout

我正在使用一些软件,可以添加一些自定义脚本。经过一些试验和错误后,我发现这个脚本只有在我这样说的时候才能工作:

setTimeout(function(){
//code
}, 900);

但我发现这有点难看,我觉得应该可以更聪明地做到这一点。我也不知道在其他电脑上我是否需要更长的时间。也许对于其他人我需要将其设置为5000,而对于其他人来说,可以将其设置为300.

是否可以在加载所有内容后触发该功能? 这个方法,我试过,但没有奏效: $(document).ready(function(){ .. }); document.addEventListener('DOMContentLoaded', function() {...}, false);

这是我的完整代码:

setTimeout(function(){
function correct(searchString, replaceString) {
    $("textarea").bind("keyup", function () {
        var $input = $(this),text = $input.val();
        var pos = $(this).prop("selectionStart");
        if (new RegExp(searchString).test(text.substring(pos-searchString.length,pos)) == true) {
            var newText = text.substring(0,pos-searchString.length) + replaceString + text.substring(pos);
            $input.val(newText);
            var newpos = pos - searchString.length + replaceString.length;
            this.setSelectionRange(newpos,newpos);
        }
    });
}
correct("RR", "ℝ");
correct(">=","≥");
}, 900);

我已在话语论坛(discourse.org)中将其设置为自定义标题

2 个答案:

答案 0 :(得分:1)

您最好的选择是加入window.onload事件:

// cross-browser event listener
function addEvent(evnt, elem, func) {
   if (elem.addEventListener)  // W3C DOM
      elem.addEventListener(evnt,func,false);
   else if (elem.attachEvent) { // IE DOM
      elem.attachEvent("on"+evnt, func);
   }
   else { // No much to do
      elem[evnt] = func;
   }
}
// add the actual event
addEvent('load', window, function(){
    // execute your code here
})

答案 1 :(得分:0)

执行文件就绪。

function correct(searchString, replaceString) {
    $("textarea").bind("keyup", function () {
        var $input = $(this),text = $input.val();
        var pos = $(this).prop("selectionStart");
        if (new RegExp(searchString).test(text.substring(pos-searchString.length,pos)) == true) {
            var newText = text.substring(0,pos-searchString.length) + replaceString + text.substring(pos);
            $input.val(newText);
            var newpos = pos - searchString.length + replaceString.length;
            this.setSelectionRange(newpos,newpos);
        }
    });
}

$(document).ready(function() {
  correct("RR", "ℝ");
  correct(">=","≥");
});