Javascript 如何防止在所有脚本完全加载之前单击图像

Javascript 如何防止在所有脚本完全加载之前单击图像,javascript,jquery,html,razor,asp.net-mvc-5,Javascript,Jquery,Html,Razor,Asp.net Mvc 5,我正在开发一个asp.net mvc web应用程序,其中包含一个与此类似的web模板 现在我面临的问题是:- 假设一个用户访问图像库,当页面加载时,他点击一个图像。然后,这将导致图像在新窗口中单独显示,而不是在jQuery滑块中显示。如果他等到页面完全加载,那么就不会有任何问题 我不能理解的是,我在呈现页面主体之前引用了所有脚本。因此,这意味着图像库在浏览器中不可用,除非所有脚本都已完全加载,但情况并非如此 下面是我的_布局视图的样子,在这里我引用了Renderbody()之前的所有脚本:-

我正在开发一个asp.net mvc web应用程序,其中包含一个与此类似的web模板

现在我面临的问题是:-

  • 假设一个用户访问图像库,当页面加载时,他点击一个图像。然后,这将导致图像在新窗口中单独显示,而不是在jQuery滑块中显示。如果他等到页面完全加载,那么就不会有任何问题
  • 我不能理解的是,我在呈现页面主体之前引用了所有脚本。因此,这意味着图像库在浏览器中不可用,除非所有脚本都已完全加载,但情况并非如此

    下面是我的_布局视图的样子,在这里我引用了
    Renderbody()
    之前的所有脚本:-

    
    @视图包。标题
    @style.Render(“~/Content/css”)
    @Styles.Render(“~/Content/Customcss”)
    @Scripts.Render(“~/bundles/modernizer”)
    @Scripts.Render(“~/bundles/jquery”)
    @RenderSection(“脚本”,必需:false)
    @RenderBody()
    
    以下是导致问题的视图:-

    <header id="header" class="headerpages">
        <div class="bgpattern"></div>
        @Html.Partial("~/Views/Shared/Navigation.cshtml")
    </header>
    <div id="content">
        <!--==============================row7=================================-->
        <div class="row_7">
            <div class="container">
                <h2 style="text-align:center"  >Project</h2>
    
                <br/>
                <div class="row">
                    <h2 class="padbot1">
                        Villa
                    </h2>
    
                        <ul class="listgall">
    
                            <li class="col-lg-4 col-md-4 col-sm-6  col-xs-6 colgal customBoarder">
                                <h5 class="customh5">Villa</h5>
                                <figure><a href="~/img/T/sbig.jpg" class="thumb"><img src="~/img/T/a.jpg" alt=""><span><strong>Project name:</strong><em>Villa</em><img src="~/img/T/searchsmall.png" alt=""></span></a><a href="@Url.Action("OurProjects", "Home", new  {name="a" })" class="btn btn1">Read More about this vella<br /> </a></figure>
                            </li>
    
    
                        </ul>
                    <hr style="border-width: 3px 0 0;"/>
                    <h2 class="padbot1">
                        Triplex</h2>
                        <ul class="listgall">
                            <li class="col-lg-4 col-md-4 col-sm-6  col-xs-6 colgal customBoarder">
                                <h5 class="customh5">The TROJANA (Macedonian Oak) Triplex</h5>
                                <figure><a href="~/img/T/trojana_big.jpg" class="thumb"><img src="~/img/T/trojana.jpg" alt=""><span><strong>Project name:</strong><em>The TROJANA (Macedonian Oak) Triplex</em><img src="~/img/T/searchsmall.png" alt=""></span></a><a href="@Url.Action("OurProjects", "Home", new  {name="Trojana" })" class="btn btn1">Read More</a></figure>
                            </li>
                        </ul>
                    <hr style="border-width: 3px 0 0;" />
                                    @Html.Partial("~/Views/Shared/_table.cshtml")
    
    
    
    
    
    </div>
    
    
                <div class="row">
                    <div class="col-lg-12 col-md-12 col-sm-12 gmap">
                        <div class="map">
    
                            <iframe src="https://www.google.com/maps/embed/v1/place?key=A...."></iframe></div>
    
    
                    </div>
                </div>
            </div>
        </div>
    
    </div>
    @section scripts {
    <script>
        $(window).load(function () {
    
            //form1
            $('#form1').sForm({
                ownerEmail: '#',
                sitename: 'sitename.link'
            })
    
            //thumb
            // Initialize the gallery
            $('.thumb').touchTouch();
    
    
        });
    </script>
        <style>
            #prevArrow, #nextArrow {
      display: none;
    }
        </style>
    
    
    @Html.Partial(“~/Views/Shared/Navigation.cshtml”)
    项目
    
    别墅
    • 别墅

    三胞胎
    • 特洛伊(马其顿橡树)三倍体

    @Html.Partial(“~/Views/Shared/_table.cshtml”) @节脚本{ $(窗口)。加载(函数(){ //表格1 $('#form1').sForm({ 所有者邮件:“#”, sitename:“sitename.link” }) //拇指 //初始化库 $('.thumb').touchTouch(); }); #上箭头,下箭头{ 显示:无; }

    那么,有人能告诉我如何解决这个问题吗?为什么浏览器仍在加载脚本时,图像库会在浏览器中可用?

    我知道这个问题已经解决了,但对于访问这里的人来说,以防其他人遇到同样的问题并在这里找到它。 如评论所述 使用

    而不是

        $(window).load(function() {
         // executes when complete page is fully loaded, including all frames, objects and images
         alert("window is loaded");
        });
    
    下面的代码阻止用户在页面完全加载之前单击文档(图像或任何其他内容)。添加
    $(文档)。单击(false);
    $(文档)。准备好
    函数和
    $(文档)。单击(true)
    $(窗口)。加载函数

    $(document).ready(function() {
        $(document).click(false);
    });
    $(window).load( function(){ 
        $(document).click(true);
    });
    

    @aimme你能告诉我你的意思吗?@aimme我把window.load改为document.ready,似乎它解决了问题,,不知道为什么…@aimme我真的很困惑到底发生了什么…现在使用window.load时,除非整个页面都加载了,否则脚本不应该启动,那么为什么在加载页面的同时单击一个图像,图像会在一段时间内打开呢新建窗口..但这是不正确的,因为窗口加载将在document.ready之后,而不是在它之前!!!请检查此项,,,window.onload稍后会触发(或者在最坏/失败的情况下同时触发)@johnG表示我很高兴,也不厌倦帮助或与他人交谈:)但如果我将window.load替换为document.ready,它将根据我的测试解决问题。。
        $(window).load(function() {
         // executes when complete page is fully loaded, including all frames, objects and images
         alert("window is loaded");
        });
    
    $(document).ready(function() {
        $(document).click(false);
    });
    $(window).load( function(){ 
        $(document).click(true);
    });