【问题标题】:jQuery Code Only Fires On Hard Refresh?jQuery 代码仅在硬刷新时触发?
【发布时间】:2012-11-07 22:18:18
【问题描述】:

Facebook 注册插件的 XFBML 版本仅加载 HTTPS。我需要它来加载 HTTP,这样我的表单就不会调用域之间的安全错误不匹配。

我编写这段代码是为了获取 SRC 并在不使用 HTTPS 的情况下重写它

它在第一次加载时运行良好,但在 Chrome 和 Safari 上它只在第一次加载和硬刷新时加载。它不会在标准重新加载或按地址栏上的“输入”时加载。这是代码

$(window).load(function () {
          // Replace HTTPS with HTTP when frame has loaded
       $(".subscribe iframe").each(function(){
        var source = $(this).attr("src");
        //alert(source);
        var sourceNew = source.replace("https", "http"); // change https to http
        alert(sourceNew);
        $(this).attr("src", sourceNew); 
    }); 
}); 

我已将 .HTACCESS 设置为禁用服务器缓存

<Files *>
Header set Cache-Control: "private, pre-check=0, post-check=0, max-age=0"
Header set Expires: 0
Header set Pragma: no-cache
</Files>

是什么导致它不能可靠地触发?谢谢

【问题讨论】:

  • 您应该检查您的服务器配置是否有任何特定的缓存设置。
  • HTACCESS 已设置为禁用缓存。奇怪的是,在 FireFox 上,它加载 100% 的时间。所以这让我相信这不是服务器问题,而是浏览器问题。
  • 你为什么使用$(window).load,而不仅仅是$(function(){…})
  • 我需要等到所有 iframe 都加载完毕,这些 iframe 都是由 Facebook JS SDK 以编程方式插入的,这样我才能获取源代码。否则它是未定义的。
  • 我在非 FF 浏览器中遇到了类似的问题,直到我在一种情况下为 htaccess 缓存设置了“Expires”指令。您是否设置了这个(到过去的日期...)?

标签: javascript jquery syntax-error facebook-iframe page-refresh


【解决方案1】:

尝试将 htaccess 中的 Expires 指令更改为:

Header set Expires "Mon, 01 Jan 1990 01:00:00 GMT"

【讨论】:

    【解决方案2】:

    尝试使用&lt;body onload="replacehttps()"&gt;,然后更改

    $(window).load(function () {
    

    function replacehttps(){
    

    不要忘记将功能块的结尾从 }); 更改为 };

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2019-03-04
      • 2012-05-27
      相关资源
      最近更新 更多