C# 如何确保非现场javascript不会';不妨碍站点性能?

C# 如何确保非现场javascript不会';不妨碍站点性能?,c#,javascript,asp.net,C#,Javascript,Asp.net,我需要在我的页面上包含一个非现场javascript文件,但是我不希望它能够影响我的站点的性能,以防javascript所在的服务器关闭或没有响应 我想知道的是,javascript是否能够生成某种包装函数,以确保托管非现场javascript的页面在可接受的时间范围内响应 我曾考虑在包含javascript的地方添加“defer”属性,但据我所知,在加载页面的其余部分后,仍然会使站点挂起 如果无法在javascript中实现,还有其他好的替代方案吗 我的网站是C#asp.net。如果非现场Ja

我需要在我的页面上包含一个非现场javascript文件,但是我不希望它能够影响我的站点的性能,以防javascript所在的服务器关闭或没有响应

我想知道的是,javascript是否能够生成某种包装函数,以确保托管非现场javascript的页面在可接受的时间范围内响应

我曾考虑在包含javascript的地方添加“defer”属性,但据我所知,在加载页面的其余部分后,仍然会使站点挂起

如果无法在javascript中实现,还有其他好的替代方案吗


我的网站是C#asp.net。

如果非现场JavaScript是自包含的,也就是说,在脚本正常运行之前,没有脚本依赖于它的加载,那么解决方案可能非常简单。本例使用jQuery,但任何库(甚至没有库)都是可行的:

<div id="script-placeholder"></div>
<script type="text/javascript">
$(function(){
    $('.script-placeholder').append('<script type="text/javascript" src="http://site.com/file.js"></scr'+'ipt>');
});
</script>

$(函数(){
$('.script占位符')。追加('');
});

这将等待整个页面加载完毕,然后在空占位符DIV中插入一个新的
块,这将触发浏览器尝试下载脚本。如果远程服务器响应缓慢或关闭,脚本仍将花费很长时间或超时,但它不会阻止用户在等待时使用页面的其余部分。

有趣的问题。您可能会将ajax与回调一起使用,并执行某种超时操作,如果到那时还没有加载ajax,您可以在该超时操作之前执行一些操作。但是,依赖其他网站是否有特殊原因?直接将脚本复制到您的站点似乎要简单得多。

将脚本放在页面底部,这样至少可以将脚本延迟到加载所有其他内容之后

根据您的需要,您甚至可以通过xhr(钩住实际的窗口加载事件以等待图像)在完成所有其他操作后完全加载它,然后通过eval()调用响应文本来动态注入内容。你需要在你的站点上安装一个代理,以避免跨域限制,这可能会破坏你的目的,我不确定

详情请参见此处: