Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 延迟java脚本_Javascript_Jquery - Fatal编程技术网

Javascript 延迟java脚本

Javascript 延迟java脚本,javascript,jquery,Javascript,Jquery,我想推迟下面的脚本。我需要它在按键后启动(点击鼠标后,我开始打字)。这是延迟页面加载,我特别想延迟jquery.js。。请参见下面的脚本 <script type="text/javascript" src="scripts/jQuery.js"></script> <script defer type="text/javascript"> $(document).ready(function(){ $("#searchquery").keyup(fu

我想推迟下面的脚本。我需要它在按键后启动(点击鼠标后,我开始打字)。这是延迟页面加载,我特别想延迟jquery.js。。请参见下面的脚本

<script type="text/javascript" src="scripts/jQuery.js"></script>
<script defer type="text/javascript">
$(document).ready(function(){
    $("#searchquery").keyup(function(){
        $.get("suggest.php", {searchquery: $(this).val()}, function(data){
            $("datalist").empty();
            $("datalist").html(data);
        }); 
    }); 
});

$(document).ready(function(){
    $("#searchquery2").keyup(function(){
        $.get("suggest1.php", {searchquery2: $(this).val()}, function(data){
            $("datalist").empty();
            $("datalist").html(data); 
        }); 
    });
});
</script>

$(文档).ready(函数(){
$(“#searchquery”).keyup(函数(){
$.get(“suggest.php”,{searchquery:$(this.val()},函数(数据){
$(“数据列表”).empty();
$(“数据列表”).html(数据);
}); 
}); 
});
$(文档).ready(函数(){
$(“#searchquery2”).keyup(函数(){
$.get(“suggest1.php”,{searchquery2:$(this.val()},函数(数据){
$(“数据列表”).empty();
$(“数据列表”).html(数据);
}); 
});
});

延迟脚本的最可靠方法似乎是在运行时将
元素插入页面。如果您要延迟jQuery之类的操作,那么您可能希望在加载DOM后加载它们,而不是在用户执行操作时加载它们,这样通常会更快地加载脚本,并可能为用户提供更好的性能(例如,当他们第一次单击某个东西时,他们不必等到jQuery加载后,才会发生可怕的事情)

下面是一个以与Google Analytics大致相同的方式加载脚本的示例。如果您的浏览器支持我正在使用的JS API和我正在侦听的事件,
console.log()
,然后您应该会看到
窗口。当页面加载时,jQuery
被记录为
未定义的
,然后在五秒钟后出现一个函数(只要那时jQuery加载!)

免责声明:这里绝对没有做任何事情来确保跨浏览器兼容性。这只是一个推迟脚本的简单演示

<!doctype html>
<html>
    <head></head>
    <body>
        <script>
            (function() {

                function init() {
                    loadDeferredScript('http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js');
                    console.log(window.jQuery);
                    setTimeout(function() { console.log(window.jQuery); }, 5000);
                }

                function loadDeferredScript(src) {
                    var script = document.createElement('script');
                    script.src = src;
                    var firstScript = document.getElementsByTagName('script')[0];
                    firstScript.parentNode.insertBefore(script, firstScript);
                }

                document.addEventListener('DOMContentLoaded', init);

            })();
        </script>
    </body>
</html>

(功能(){
函数init(){
loadDeferredScript('http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js');
log(window.jQuery);
setTimeout(函数(){console.log(window.jQuery);},5000);
}
函数loadDeferredScript(src){
var script=document.createElement('script');
script.src=src;
var firstScript=document.getElementsByTagName('script')[0];
firstScript.parentNode.insertBefore(script,firstScript);
}
document.addEventListener('DOMContentLoaded',init);
})();

我认为
.keyup()
不是在用户单击鼠标时触发的,而是在用户释放键盘键时触发的。要收听鼠标单击事件,必须使用
.mousedown()
。或者使用
.click()
事件。将
放在HTML的末尾。Tiago是的,这是真的,但我必须先用鼠标单击,然后再开始键入。但是如果你不用鼠标单击并开始键入,事件将被触发。你为什么不收听正确的事件?