F5 后 JQuery 加载

Posted

技术标签:

【中文标题】F5 后 JQuery 加载【英文标题】:JQuery loads after F5 【发布时间】:2015-04-24 23:24:28 【问题描述】:

我在我的 asp.net 项目中使用了以下脚本。一切正常,但在将我的项目发布到 IIS 后,一些用户抱怨渲染问题。如果他们按 F5 则一切正常,他们不必再次按 F5 即可看到控件正确呈现。

这是正常行为还是有解决方法?

.js 文件

var prm = Sys.WebForms.PageRequestManager.getInstance();


$(function () 


    $("#uc_DDiscipline select").multiselect(

        header: false,
        multiple: false,
        selectedList: 1,
        minWidth: 265
    );

);

prm.add_endRequest(function () 

    $('.ui-multiselect-menu').each(function () 
        $(this).remove();
    );

    $("#uc_DDiscipline select").multiselect(

        header: "-- View All --",
        multiple: false,
        noneSelectedText: "-- View All --",
        selectedList: 1,
        minWidth: 265
    );

);

【问题讨论】:

可能是依赖问题。在某些情况下,JS 文件没有加载,但依赖于它的代码已经运行。 【参考方案1】:

这是正常行为。部署后,浏览器仍在缓存并使用旧的 .js 文件。按 F5 后,当前的 .js 被下载,一切似乎又可以正常工作了。

你可以做的就是在 .js 文件名中添加一个参数 例如:

/Scripts/MyScrjpt.js?deployedOn=20150223

浏览器认为有一个新文件,必须下载。因此,您必须在每次部署应用程序时更改参数值。

【讨论】:

我需要在哪里添加这个参数“/Scripts/MyScrjpt.js?deployedOn=20150223”。脚本在 .js 文件中,它在用户控件中被引用 尝试像这样添加它: 我需要对我的 .js 文件中的参数 'deployedOn=20150223' 执行任何操作吗? 不,你不需要对此做任何事情。您甚至可以添加一些非常短的内容,例如“user-find.js?v=1”。重要的是在文件名的末尾添加一个 GET 参数(使用 ?)。

以上是关于F5 后 JQuery 加载的主要内容,如果未能解决你的问题,请参考以下文章

防止用户使用 jquery 或 javascript 重新加载页面 [重复]

用js怎么像按F5那样重新加载页面中一个div里面的内容呢?而页面不会再次刷新,只重加载这个div里面的内容

Jquery.height() 使用 F5 或 CTRL+F5 返回不同的结果

为啥html导入了jquery.js页面却没有加载?

在第一次加载或使用ctrl + f5重新加载时在firefox上的画布上绘制图像不起作用

新浪微博老说CSS加载失败,请你尝试按ctrl+F5刷新页面。