【问题标题】:How to stop page load in html static page如何在html静态页面中停止页面加载
【发布时间】:2012-02-15 03:00:25
【问题描述】:

是否存在 HTML (javascript) 或其他静态 html 技术 可以:

  • 停止页面加载(如果浏览器尚未下载)
  • 停止页面呈现(从代码放置的位置)
  • 停止执行 javascript(从代码放置的位置)

简单来说,有没有类似的代码

<script>window.StopWhateverBelow()</script>

让浏览器完全忽略代码下面的任何内容。

更新

我知道浏览器可能已经下载了整个内容。我想要的是,从代码中,页面应该停止,例如:如果我将代码放在&lt;body&gt; 访问者之后应该看到空白页面,如果我把代码放在页面中间,页面应该只是你的一半按下 ESC

回答

正如 bukko 建议的那样,cmets 成功了。但不是满的,只有一半 如果将&lt;!-- 放在html 页面中,其余部分将被忽略。在Javascript中

document.write('<!--');

成功了。

关于意义:

以下是这段代码的意义:当您在页面加载一些离页脚本时,该脚本是动态的。当脚本代码发现错误(或匹配某些条件)时,您还有一个选项可以阻止页面呈现、加载、下载...

【问题讨论】:

  • 这没有任何意义。你想做什么?
  • 您是否要求能够添加 cmets 而不会显示给普通访问者?阻止浏览器解释任何东西是没有意义的......
  • @LoïsDiQual 这种类型的负 cmets 是不合适的。我刚刚偶然发现了一个很好的用例(5 年多后!),我很高兴这个问题得到了很好的答案,而不是因为有点不寻常而被否决。

标签: javascript html


【解决方案1】:

嗯,有: <!-- terminated by --> 对于 HTML,但脚本会忽略这一点。

【讨论】:

    【解决方案2】:

    HTML 是静态内容,因此服务器会读取您在文件中写入的任何内容,除非您将其注释掉。对于像您所要求的那样的动态文件,您需要使用可以执行此类操作的 php。

    【讨论】:

    • 如果您想构建动态页面而不仅仅是 php,还有其他选项
    【解决方案3】:

    你所问的没有逻辑意义。原因有二:

    • 数据已发送给用户 (HTML / JS),因此即使您可以隐藏内容,数据也会在那里供用户查看(例如,如果他们查看源代码)。
    • 为什么要停止“执行”页面?它加载简单的 html 结构并以可视化方式显示,您应该首先关注服务器站点(例如 php)以隐藏或不发送内容。

    如果您想在视觉上隐藏元素,您可以使用 CSS 样式(隐藏 div 等),只需将 style="display:none;" 添加到 div 中,如下所示:

    <div style="display:none;">
    This text will be downloaded by the user, but hidden from view due to CSS inline style
    </div>
    

    如果您想添加评论(仅供参考),请使用评论格式:

    <!-- this is a comment and will not show up to a user -->
    

    cmets 参考:http://htmlhelp.com/reference/wilbur/misc/comment.html

    【讨论】:

      【解决方案4】:

      对于除 Internet Explorer 之外的大多数浏览器,您都可以使用 window.stop();。对于 IE,我必须使用 document.execCommand('Stop');

      【讨论】:

      • 为什么需要为这些函数导入 jQuery?他们应该在没有 jQuery 的情况下工作。
      【解决方案5】:

      如果您的页面上已经有 html cmets,@bukko 的解决方案无法完全正常工作。 html 注释后的内容会正常渲染。

      要尝试的其他方法是:

      document.write('<script type="text/undefined">')
      

      文档的其余部分被解释为脚本标记的一部分,并且因为脚本不是text/javascript,所以它被忽略了。

      为我工作,我想我会分享它。


      编辑

      我发现 script 技巧在 Chrome 中不起作用。

      这确实有效,但我没有进行广泛的浏览器测试:

      document.write('<style type="text/undefined">')
      

      【讨论】:

      • 浏览器 (Chrome) 在尝试执行此操作后会自动使用 &lt;/script&gt; 将其关闭
      • 同IE 11。脚本标签自动关闭
      • 非常有趣的 hack,但在某些情况下似乎也不适用于 MS Edge。在我的情况下,这比建议的效果更好,下面的window.stop();(虽然很hacky),因为使用stop,已经加载的元素会突然显示,这在重定向之前可能会非常不和谐。
      【解决方案6】:

      把 window.Stop() 放在你想阻止页面渲染的地方

      【讨论】:

        【解决方案7】:
        window.stop(); //works in all browsers but IE    
        if ($.browser.msie) {document.execCommand("Stop");}; //works in IE, 
        

        document.execCommand 在 IE 中工作,但它确实停止了一些 FF、NS 和一些其他浏览器的功能。例如显示 GIF 的动画。使用“if browser is IE”使这两个代码在所有浏览器中都能完美运行。

        【讨论】:

          【解决方案8】:

          与这个问题关系不大,但我认为它可能对某些人有用。如果您想在页面加载期间跳转到其他页面,请使用 window.location = "somepage.html"; 或者您可以将用户重定向到上一页:window.history.go(-1); 在 JavaScript 条件语句中很有用

          【讨论】:

          • 页面仍然会渲染,无论显示多么短暂,使用这个。
          【解决方案9】:

          如果您使用的是 ASP 或 PHP,HTTP 协议会自动停止,但 HTTPS 协议不会自动停止。

          要阻止它使用:

          在 ASP 中:

          dim r= accept.secure.protocol
          r.onload=window.callback('c')
          
          //to firefox,opera,safari
          
          new clientObject(r).access()
          // to chrome,ie
          
          forEachElement(a==null);
          

          PHP 代码:

          $a.window ;
          

          所有这些脚本都通过 post 方法发送浏览器字符串“elementcast”

          【讨论】:

            【解决方案10】:

            你也可以这样隐藏身体:

            var style = document.createElement("style");
            style.innerHTML="body { display:none !important; }";
            document.getElementsByTagName("HEAD")[0].appendChild(style);
            

            【讨论】:

              【解决方案11】:

              stop 方法可以破坏已经开始加载的内容。

              如果您想加载某个点以上的所有内容并跳过某个点以下的所有内容:

              <p>Everything works above this point.</p>
              <pre style="display: none !important;">
              <p>As long as the PRE tag remains open, 
              nothing works below this point</p>
              <script>document.write('Nope');
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2017-05-06
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多